Ruby中的哈希语法

gri*_*yvp 23 ruby hash syntax-error

根据The Well Grounded Rubyist:

Ruby允许在哈希键位置使用特殊形式的符号表示,在符号之后使用冒号而不是之前的冒号,并删除哈希分隔符箭头.换句话说,这个:

hash = { :name => "David", :age => 49 }
Run Code Online (Sandbox Code Playgroud)

也可以这样写:

hash = { name: David, age: 49 }
Run Code Online (Sandbox Code Playgroud)

我在ruby 1.8.7和1.9.2中尝试了前面的代码 - 它无法正常工作.我究竟做错了什么?

mea*_*gar 38

Ruby 1.9中的新哈希语法仍然需要引用字符串,因此David不需要"David".

试试这个:

hash = { name: "David", age: 49 }
Run Code Online (Sandbox Code Playgroud)

如果这本书使用了David没有引号的单词,那就错了.您可能有兴趣阅读其他一些勘误表.

  • @loungerdork是的.它完全等同于`{:name =>"David"}` (2认同)