Le post de fusée RIP Hash bien cité semble impliquer que la syntaxe Hash Rocket ( :foo => "bar"
) est déconseillée au profit du hachage de style JSON nouveau à Ruby ( foo: "bar"
), mais je ne trouve aucune référence définitive indiquant la forme Hash Rocket est en fait obsolète / déconseillée à partir de Ruby 1.9.
99
Réponses:
L'auteur de ce billet de blog est trop dramatique et stupide, il
=>
est encore tout à fait nécessaire . En particulier::'where.is' => x
est valide mais'where.is': x
ne l'est pas. Ruby 2.2 a résolu ce problème, vous pouvez donc le dire'where.is': x
dans Ruby 2.2+.:$set => x
est valide mais$set: x
ne l'est pas. Dans Ruby 2.2+, vous pouvez contourner ce problème avec des guillemets:'$set': x
fera la bonne chose.'s' => x
c'est valide mais's': x
c'est quelque chose de complètement différent.Vous pouvez bien sûr parcourir ce qui précède de la manière évidente:
mais c'est juste moche et inutile.
La fusée ne va nulle part sans paralyser Ruby's Hashes.
la source
h[:s]
je fais), donc la syntaxe de style JavaScript est juste une complication inutile pour moi. Cela me semble être une idée de gee-whiz mal pensée et maintenant nous sommes coincés avec elle et la confusion qui y est associée pour toujours.a = [0,1,4,9]
vsa = Array.new(4){ |i| i**2 }
.. Pourquoi utiliser le premier alors que vous avez parfois besoin d'utiliser le second? Réponse: parce que c'est plus pratique. TIMTOWTDI complique le langage, mais c'est un compromis. Lua est vraiment élégant au cœur et donc facile à apprendre, mais ennuyeux à coder. Ruby a beaucoup de cas spéciaux et de fonctionnalités personnalisées qui le rendent plus difficile à apprendre, mais c'est un plaisir de programmer. Je, pour ma part, bienvenue la notation Hash-with-symbol-keys plus simple à taper, plus facile à lire pour le cas courant.my_hash = {a:1}
etmyhash[:a] = 1
est, au moins, plutôt ennuyeux. Je suis sûr que je ne suis pas le seul à ressentir cela.