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