Устарел хэш-ракета?
самых цитируемых 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: xis не. В Ruby 2.2+ вы можете обойти эту проблему с кавычками:'$set': xбудет делать правильные вещи. - вы должны использовать ракету, если вы используете ключи в хэшах, которые не являются символами:
's' => xдопустима, но's': xэто что-то совершенно другое.
вы можете kludge вокруг выше в очевидной манере, конечно:
h = { }
h[:'where.is'] = 'pancakes house?'
# etc.
но это просто некрасиво и ненужно.
ракета никуда не денется, не покалечив Руби Гашиши.