Поддерживает ли Ruby 1.8.7 head хеш-литералы в стиле 1.9? - PullRequest
1 голос
/ 11 апреля 2011

Согласно http://redmine.ruby -lang.org / Issues / 1183 , Ruby 1,9 {foo: 42} явно был перенесен в Ruby 1.8. Но я попытался запустить ruby-1.8.7-head, используя RVM, и получил стандартную синтаксическую ошибку:

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?

1 Ответ

2 голосов
/ 11 апреля 2011

Проверьте номер версии: этот патч был применен к Ruby 1.8. 8 , а не 1.8.7. Какое ядро ​​ruby-core согласовано всего 4 дня назад, никогда не выйдет. На прошлой неделе 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, так что это просто не имело смысла отвлечь на него больше ресурсов.

...