Хорошо цитируемый 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.
но это просто уродливое и ненужное.
Ракета никуда не денется, без разрушения рубиновых хэшей.