foo[:p roduct] = "abc" 和 foo[ "product" ] = "abc" 在轨道上的红宝石中有什么区别吗?



注意,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"
#           ^

最新更新