根据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中反映的源代码的所有更改?
答案 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的影响,所以它根本就没有意义转移更多的资源。