开发者

Is there any difference between foo[:product] = "abc" and foo["product"] = "abc" in ruby on rails

开发者 https://www.devze.com 2023-03-21 04:34 出处:网络
Notice, it\'s not difference between product = \"abc\" and product = :abc. it\'s foo[:product] = \"abc\" and foo[\"product\"] = \"abc\", so the question is more about Ruby on 开发者_C百科rails script

Notice, it's not difference between product = "abc" and product = :abc.

it's foo[:product] = "abc" and foo["product"] = "abc", so the question is more about Ruby on 开发者_C百科rails script parser. Does RoR also cache/hash class property name?


A normal Ruby Hash will differentiate between the keys :product and "product". An instance of ActiveSupport::HashWithIndifferentAccess will consider both of those as the same key.

You can call #with_indifferent_access on a Hash to convert it, but be aware that you can lose key/value pairs when doing so.


No, there is no difference. Both of these are simply SyntaxErrors, since neither :product nor "product" is a legal variable name:

"product" = "abc"
# SyntaxError: syntax error, unexpected '=', expecting $end
# "product" = "abc"
#            ^

:product = "abc"
# SyntaxError: syntax error, unexpected '=', expecting $end
# :product = "abc"
#           ^
0

精彩评论

暂无评论...
验证码 换一张
取 消