web-dev-qa-db-fra.com

Hash Rocket est-il obsolète?

Le bien cité RIP Hash rocket post semble impliquer la syntaxe de Hash Rocket (:foo => "bar") est déconseillé au profit du nouveau hachage de style JSON Ruby (foo: "bar"), mais je ne trouve aucune référence définitive indiquant que le formulaire Hash Rocket est en fait obsolète/déconseillé à partir de Ruby 1.9.

97
mahemoff

L'auteur de ce billet de blog est trop dramatique et stupide, le => est encoretout à faitnécessaire . En particulier:

  1. Vous devez utiliser la fusée pour les symboles qui nécessitent des guillemets: :'where.is' => x est valide mais 'where.is': x n'est pas. Ruby 2.2 a corrigé ce problème afin que vous puissiez dire 'where.is': x in Ruby 2.2+.
  2. Vous devez utiliser la fusée pour les symboles qui ne sont pas des étiquettes valides: :$set => x est valide mais $set: x n'est pas. Dans Ruby 2.2+, vous pouvez contourner ce problème avec des guillemets: '$set': x fera la bonne chose.
  3. Vous devez utiliser la fusée si vous utilisez dans votre Hash des clés qui ne sont pas des symboles: 's' => x est valide mais 's': x est quelque chose de complètement différent.

Vous pouvez bien sûr contourner ce qui précède de la manière la plus évidente:

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

mais c'est tout simplement laid et inutile.

La fusée ne va nulle part sans paralyser les hachages de Ruby.

129
mu is too short