Хорошо процитированный пост RIP Hash rocket , по-видимому, подразумевает, что синтаксис Hash Rocket ( :foo => "bar"
) устарел в пользу хэша в стиле JSON, нового для Ruby foo: "bar"
, но я не могу найти какой-либо окончательной ссылки, в которой указывается форма Hash Rocket фактически устарел / не рекомендуется начиная с Ruby 1.9.
99
Ответы:
Автор этого блога поста чрезмерно драматичным и глупо, то
=>
это еще совсем необходимо . В частности:Вы должны использовать ракету для символов, которые не являются допустимыми ярлыками:
:$set => x
действительно, но$set: x
не является. В Ruby 2.2+ эту проблему можно обойти с помощью кавычек:'$set': x
will do The Right Thing.Вы должны использовать ракету, если вы используете в своих хэшах ключи, которые не являются символами, например строки, целые числа или константы. Например,
's' => x
действительно, но's': x
это совсем другое.Конечно, вы можете обойти все вышесказанное очевидным образом:
но это просто некрасиво и ненужно.
Ракета никуда не денется, не повредив Ruby Hashes.
источник
h[:s]
я делаю), поэтому синтаксис стиля JavaScript для меня просто бессмысленное усложнение. Мне кажется, что это плохо продуманная идея, и теперь мы навсегда застряли в ней и связанной с ней неразберихе.a = [0,1,4,9]
VS.a = Array.new(4){ |i| i**2 }
. Зачем использовать первое, если иногда нужно использовать второе? Ответ: потому что так удобнее. TIMTOWTDI усложняет язык, но это компромисс. Lua действительно элегантен по своей сути и, следовательно, его легко изучить, но на самом деле код его раздражает. Ruby имеет множество особых случаев и настраиваемых функций, которые усложняют изучение, но при этом приятно программировать. Я, например, приветствую более простая в использовании и понятная нотация Hash-with-symbol-keys для общего случая.my_hash = {a:1}
иmyhash[:a] = 1
, по крайней мере, весьма раздражает. Я уверен, что я не единственный, кто так думает.