Non*_*ona 35 ruby string hash symbols literals
使用Ruby 2.3:
在示例1中,字符串键"a"自动转换为符号,而在示例2中,它保持字符串.
例1
{"a": 1}
# => {:a=>1}
Run Code Online (Sandbox Code Playgroud)
例2
{"a"=>"c"}
# => {"a"=>"c"}
Run Code Online (Sandbox Code Playgroud)
我认为:与旧式哈希火箭=>语法相同.到底是怎么回事?为什么我在Rails中从未注意到这一点?这HashWithIndifferentAccess是否模糊了这个?
Zab*_*bba 39
在Ruby 2.3(.0)中,这些都是相同的:
{:"a" => 1}
{"a": 1},
{:a => 1}
{a: 1}
Run Code Online (Sandbox Code Playgroud)
它们都转化为同样的东西:a在所有这些情况下都是一个符号.
{"a"=>1}不同:a在这种情况下是一个字符串.
这是因为ruby 1.9引入了新的哈希语法.带冒号的语法仅适用于符号键.它被称为"符号对象"哈希,它只是最常见的哈希风格的语法糖.对我来说另一点,它更接近于javascript对象表示法.
如果我有混合键类型,那么我更喜欢旧样式(哈希火箭语法),但这取决于你.混合这两种风格看起来很难看.