Чи застаріла хеш-ракета?


99

Добре цитований ракетний пост RIP Hash , здається, означає, що синтаксис Hash Rocket ( :foo => "bar") застарілий на користь нового хеша у стилі JSON у стилі Ruby ( foo: "bar"), але я не можу знайти жодної остаточної посилання, що б вказувала форму Hash Rocket фактично застаріло / не було переглянуто станом на Ruby 1.9.


Я думаю, що хлопець використовує лише Рубі з Рейлами.
Ніклас Б.

Хай живе ракета
HashRocketSyntax

Ракета все ще іде сильною 🚀
mahemoff

Відповіді:


132

Автор цього блогу поста надмірно драматичним і нерозумно, то =>це ще зовсім необхідно . Зокрема:

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

Зрозуміло, ви можете зрозуміти, як це зрозуміло:

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

але це просто потворно і непотрібно.

Ракета нікуди не дінеться без каліки Рубі хеши.


6
s / надмірно драматичний і нерозумний / драматичний і пропагандистський з красномовним шануванням /. Решта ваших очок стоять.
dbenhur

15
Вам потрібно задуматися, чи використання нового синтаксису, коли вам ще потрібно покластися на старий синтаксис для певних сценаріїв, просто ускладнить наш код.
Дейв Рапін

4
@DaveRapin: Ось чому я не переймаюся синтаксисом без ракети. Я дуже непомітно працюю над MongoDB, і я часто використовую несимволи як клавіші Hash (не маю на увазі все, що h[:s]я роблю), тому синтаксис стилю JavaScript є для мене просто безглуздим ускладненням. Мені здається, погано продумана ідея гу-віз для мене, і ми зараз з цим і пов'язаною плутаниною назавжди.
mu занадто короткий

8
@DaveRapin Поміркуйте a = [0,1,4,9]проти a = Array.new(4){ |i| i**2 }. Навіщо використовувати перший, коли іноді потрібно використовувати останній? Відповідь: адже це зручніше. TIMTOWTDI ускладнює мову, але це є компромісом. Луа по-справжньому елегантна, а отже, легка в навчанні, але дратує насправді кодування. У Рубі є маса особливих випадків та спеціальних функцій, які ускладнюють навчання, але радість програмувати. Я, наприклад, вітаю простіший набір, простіший для читання позначення Hash-з-символом-клавішами для загального випадку.
Фрогз

7
Хоча менш весело набирати, я, безумовно, віддаю перевагу хеш-ракеті. Чому? тому що це означає, що кожного разу, коли я використовую символ для ключа, я можу шукати його в будь-якому місці свого проекту, шукаючи рядок, що починається з двокрапки. Для мене відсутність узгодженості між фактичними символами, які використовуються для позначення ключа, my_hash = {a:1}і myhash[:a] = 1, принаймні, досить дратує. Я впевнений, що я не єдиний, хто так себе почуває.
Хуліякс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.