Устарел хэш-ракета?
самых цитируемых RIP Hash rocket post казалось бы, подразумевает синтаксис хэш-ракеты (:foo => "bar"
) устарел в пользу хэша JSON-стиля new-to-Ruby (foo: "bar"
), но я не могу найти никакой окончательной ссылки, заявляющей, что форма хэш-ракеты фактически устарела/неактивирована с Ruby 1.9.
1 ответов
автор этого сообщения в блоге слишком драматичен и глуп,=>
is еще совсем необходимые. В частности:
- вы должны использовать ракету для символов, которые требуют заключения в кавычки:
:'where.is' => x
допустима, но'where.is': x
нет. Ruby 2.2 исправил эту проблему, поэтому вы можете сказать'where.is': x
в Ruby 2.2+. - вы должны использовать ракету для символов, которые не являются допустимыми метки:
:$set => x
допустима, но$set: x
is не. В Ruby 2.2+ вы можете обойти эту проблему с кавычками:'$set': x
будет делать правильные вещи. - вы должны использовать ракету, если вы используете ключи в хэшах, которые не являются символами:
's' => x
допустима, но's': x
это что-то совершенно другое.
вы можете kludge вокруг выше в очевидной манере, конечно:
h = { }
h[:'where.is'] = 'pancakes house?'
# etc.
но это просто некрасиво и ненужно.
ракета никуда не денется, не покалечив Руби Гашиши.