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