Ruby 1.8.7头是否支持1.9样式的散列文字?

时间:2011-04-11 11:47:27

标签: ruby ruby-1.8

根据http://redmine.ruby-lang.org/issues/1183,Ruby 1.9的{foo: 42}显然被反向移植到Ruby 1.8。但我尝试使用RVM运行ruby-1.8.7-head,我得到了标准语法错误:

Andrew-Grimms-MacBook-Pro:ruby agrimm$ rvm use ruby-1.8.7-head
Using /Users/agrimm/.rvm/gems/ruby-1.8.7-head
Andrew-Grimms-MacBook-Pro:ruby agrimm$ irb
ruby-1.8.7-head :001 > {a: "foo"}
SyntaxError: compile error
(irb):1: odd number list for Hash
{a: "foo"}
   ^
(irb):1: syntax error, unexpected ':', expecting '}'
{a: "foo"}
   ^
(irb):1: syntax error, unexpected '}', expecting $end
    from (irb):1

是否已将更改恢复,或者不是对ruby-1.8.7-head中反映的源代码的所有更改?

1 个答案:

答案 0 :(得分:2)

检查版本号:此补丁适用于Ruby 1.8。 8 ,而不是1.8.7。 4天前刚达成一致的ruby-core永远不会发布。截至上周,1.8正式死亡。

1.8.8是神话般的过渡版本,可以正确解析但不执行Ruby 1.9语法,这样你就可以编写像

这样的东西
if RUBY_VERSION > '1.8'
  ->x { x }
else
  lambda {|x| x }
end

然而,事实证明,每个想要迁移到Ruby 1.9的人都已经这样做了,那些不想迁移的人不会受到1.8.8的影响,所以它根本就没有意义转移更多的资源。