请注意,product = "abc"
和product = :abc
之间没有区别。
它是foo[:product] = "abc"
和foo["product"] = "abc"
,所以问题更多的是关于Ruby on rails脚本解析器。
RoR是否还缓存/哈希类属性名称?
答案 0 :(得分:7)
正常的Ruby Hash会区分键:product
和"product"
。 ActiveSupport::HashWithIndifferentAccess
的实例会将这两个实例视为相同的密钥。
您可以在哈希上调用#with_indifferent_access
进行转换,但请注意,这样做会丢失键/值对。
答案 1 :(得分:0)
不,没有区别。这两个都只是SyntaxError
s,因为:product
和"product"
都不是合法的变量名称:
"product" = "abc"
# SyntaxError: syntax error, unexpected '=', expecting $end
# "product" = "abc"
# ^
:product = "abc"
# SyntaxError: syntax error, unexpected '=', expecting $end
# :product = "abc"
# ^