Ruby曾经支持过吗?

时间:2013-10-14 03:03:15

标签: ruby hash syntax

当我们在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+,为什么我仍然会收到错误?

2 个答案:

答案 0 :(得分:5)

第二个示例中的正确语法是:

{ a: 'b' }

这是Ruby 1.9及更高版本的新功能,允许将JSON-ish语法用于Ruby哈希。

答案 1 :(得分:2)

不,它在Ruby中不受支持,但自Ruby 1.9以来支持这种类似的语法

h = { a: 'b' }
#=> {:a=>"b"}

它相当于

h = { :a => 'b' }
#=> {:a=>"b"}