Новый синтаксис хэша в Ruby 1.9.2 означает, что я могу сделать следующее:
my_hash = {a: 1, b: 2, c: 3}
... что эквивалентно:
my_hash = {:a => 1, :b => 2, :c => 3}
Хорошо, так что используястарый синтаксис, это возможно сделать (первый ключ - целое число):
my_hash = {1 => 1, :b => 2, :c => 3}
И я обнаружил, что возможно даже смешать новый и старый синтаксис так:
my_hash = {1 => 1, b: 2, c: 3}
Итак, если мы воспользуемся «принципом наименьшего удивления», можно ожидать, что следующее будет законным:
my_hash = {1: 1, b: 2, c: 3}
... но это не так.Он генерирует синтаксическую ошибку:
SyntaxError: (irb):40: syntax error, unexpected '='
my_hash = = {1: 1, b: 2, c: 3}
Кто-нибудь может объяснить, является ли это ограничением синтаксического анализатора, или есть очень веские причины, почему это невозможно или допустимо?