注意,product = "abc"
和product = :abc
之间没有差异。
是foo[:product] = "abc"
和foo["product"] = "abc"
,所以问题更多的是关于Ruby on rails脚本解析器。RoR是否也缓存/散列类属性名称?
一个正常的Ruby散列将区分键:product
和"product"
。ActiveSupport::HashWithIndifferentAccess
的一个实例将把这两个键看作是相同的键。
您可以在Hash上调用#with_indifferent_access
来转换它,但要注意,这样做可能会丢失键/值对。
不,没有区别。这两个都是SyntaxError
s,因为:product
和"product"
都不是合法的变量名:
"product" = "abc"
# SyntaxError: syntax error, unexpected '=', expecting $end
# "product" = "abc"
# ^
:product = "abc"
# SyntaxError: syntax error, unexpected '=', expecting $end
# :product = "abc"
# ^