当我们在Ruby中定义dict/hash时,我们这样做:
{:a => 'b'}
但我读了一些Ruby代码,如下所示:
{:a : 'b'}
这应该是类似Python的。有没有Ruby版本支持这个功能?我从来没有读过任何Ruby的书提到过这一点。
更新:
我在Linux机器上运行了以下命令:
$ ruby -v
ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-linux]
$ ruby -e 'puts {a: "b"}'
-e:1: syntax error, unexpected ':', expecting '}'
puts {a: "b"}
^
并在我的Macbook上运行了以下代码:
$ /Users/chaol/.rvm/wrappers/ruby-2.0.0-p247/ruby -v
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin12.3.0]
$ /Users/chaol/.rvm/wrappers/ruby-2.0.0-p247/ruby -e 'puts {a: "b"}'
-e:1: syntax error, unexpected ':', expecting '}'
puts {a: "b"}
^
两个Ruby版本都是1.9+,为什么我还是收到这个错误?
发布于 2013-10-14 03:04:52
第二个示例中的正确语法是:
{ a: 'b' }
这是Ruby 1.9及更高版本的一个新特性,允许将JSON语法用于Ruby散列。
发布于 2013-10-14 03:09:46
不,Ruby中不支持这种语法,但从Ruby 1.9开始就支持这种类似的语法
h = { a: 'b' }
#=> {:a=>"b"}
它相当于
h = { :a => 'b' }
#=> {:a=>"b"}
https://stackoverflow.com/questions/19352914
复制相似问题