Устарел хэш-ракета?

самых цитируемых RIP Hash rocket post казалось бы, подразумевает синтаксис хэш-ракеты (:foo => "bar") устарел в пользу хэша JSON-стиля new-to-Ruby (foo: "bar"), но я не могу найти никакой окончательной ссылки, заявляющей, что форма хэш-ракеты фактически устарела/неактивирована с Ruby 1.9.

1 ответов


автор этого сообщения в блоге слишком драматичен и глуп,=> is еще совсем необходимые. В частности:

  1. вы должны использовать ракету для символов, которые требуют заключения в кавычки: :'where.is' => x допустима, но 'where.is': x нет. Ruby 2.2 исправил эту проблему, поэтому вы можете сказать 'where.is': x в Ruby 2.2+.
  2. вы должны использовать ракету для символов, которые не являются допустимыми метки: :$set => x допустима, но $set: x is не. В Ruby 2.2+ вы можете обойти эту проблему с кавычками: '$set': x будет делать правильные вещи.
  3. вы должны использовать ракету, если вы используете ключи в хэшах, которые не являются символами:'s' => x допустима, но 's': x это что-то совершенно другое.

вы можете kludge вокруг выше в очевидной манере, конечно:

h = { }
h[:'where.is'] = 'pancakes house?'
# etc.

но это просто некрасиво и ненужно.

ракета никуда не денется, не покалечив Руби Гашиши.