3

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

4

2 回答 2

5

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

{ a: 'b' }

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

于 2013-10-14T03:04:51.987 回答
2

不,Ruby 不支持它,但是从 Ruby 1.9 开始支持这种类似的语法

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

相当于

h = { :a => 'b' }
#=> {:a=>"b"}
于 2013-10-14T03:09:46.360 回答