Der gut zitierte RIP-Hash-Raketenbeitrag scheint zu implizieren, dass die Hash-Rocket-Syntax ( :foo => "bar"
) zugunsten des neuen Ruby-JSON-Hash ( foo: "bar"
) veraltet ist , aber ich kann keine endgültige Referenz finden, die die Hash-Raketenform angibt ist ab Ruby 1.9 tatsächlich veraltet / nicht empfohlen.
99
Antworten:
Der Autor dieses Blogposts ist zu dramatisch und dumm, das
=>
ist immer noch ziemlich notwendig . Bestimmtes::'where.is' => x
ist gültig, aber'where.is': x
nicht. Ruby 2.2 hat dieses Problem behoben, so dass Sie'where.is': x
in Ruby 2.2+ sagen können.:$set => x
ist gültig, aber$set: x
nicht. In Ruby 2.2+ können Sie dieses Problem mit Anführungszeichen umgehen: Sie'$set': x
werden das Richtige tun.'s' => x
ist gültig, aber's': x
etwas völlig anderes.Sie können das oben Genannte natürlich auf offensichtliche Weise umgehen:
aber das ist nur hässlich und unnötig.
Die Rakete geht nirgendwo hin, ohne Ruby's Hashes zu lähmen.
quelle
h[:s]
ich mache), so dass die Syntax im JavaScript-Stil für mich nur eine sinnlose Komplikation ist. Scheint mir eine schlecht durchdachte Idee zu sein, und jetzt bleiben wir für immer bei ihr und der damit verbundenen Verwirrung.a = [0,1,4,9]
vs.a = Array.new(4){ |i| i**2 }
. Warum erstere verwenden, wenn Sie manchmal letztere verwenden müssen? Antwort: weil es bequemer ist. TIMTOWTDI kompliziert die Sprache, aber dies ist ein Kompromiss. Lua ist im Kern sehr elegant und daher leicht zu erlernen, aber es ist ärgerlich, tatsächlich zu programmieren. Ruby hat viele Sonderfälle und benutzerdefinierte Funktionen, die das Lernen erschweren, aber eine Freude beim Programmieren. Ich jedenfalls begrüße die einfacher zu tippende, leichter zu lesende Hash-mit-Symbolschlüssel-Notation für den allgemeinen Fall.my_hash = {a:1}
undmyhash[:a] = 1
ist, zumindest, eher lästig. Ich bin sicher, dass ich nicht der einzige bin, der so fühlt.