ruby-1.9.3-p0 :001 > { a: 1, b: 2 }
=> {:a=>1, :b=>2}
ruby-1.9.3-p0 :002 > { 'a': 1, 'b': 2 }
SyntaxError: (irb):2: syntax error, unexpected ':', expecting tASSOC
{ 'a': 1, 'b': 2 }
^
from /home/winus/.rvm/rubies/ruby-1.9.3-p0/bin/irb:16:in `<main>'
ruby-1.9.3-p0 :003 > { 'a' => 1, 'b' => 2 }
=> {"a"=>1, "b"=>2}
Ruby 1.9 的新 Hash 语法只有当 key 是 Symbol 的时候才能用,感觉这样反而多了很多语法风格不统一的地方(有些地方必需用 String 做 key)……有人用么?
在 https://github.com/saberma/shopqi 这个项目中,都是这种用法。如果你需要写的 Hash 比较多,这种写法只需要在输入冒号的时候把手挪开,省时省力。而且,用 Symbol 来做 key 应该能满足大部分情况了。
我今天刚学到这个 hash 感觉还是不习惯有时候,如果想用这种语法的话{key: value} 如果 key 是数字就不行了..只有在 key 前面加个统一的前缀-。-