foo [:product] =“abc”和foo [“product”] =“abc”在ruby on rails上有什么区别

时间:2011-07-19 16:45:09

标签: ruby-on-rails ruby

请注意,product = "abc"product = :abc之间没有区别。

它是foo[:product] = "abc"foo["product"] = "abc",所以问题更多的是关于Ruby on rails脚本解析器。 RoR是否还缓存/哈希类属性名称?

2 个答案:

答案 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"
#           ^