ハッシュロケットは廃止されましたか?


99

よく引用されているRIPハッシュロケットポストは、Hash Rocket構文(:foo => "bar")が非RubyのJSONスタイルのハッシュ(foo: "bar")のために廃止されることを示唆しているようですが、ハッシュロケットフォームを示す明確なリファレンスは見つかりませんRuby 1.9の時点で実際には非推奨/非推奨です。


その人はRubyとRailsだけを使用していると思います。
Niklas B.

ロケットを
長持ちさせる

ロケットはまだ強い🚀を行っている
mahemoff

回答:


132

そのブログの投稿者は過度に劇的で愚かであり、それ =>まだ 非常に 必要です。特に:

  1. 引用符が必要なシンボルにはロケットを使用する必要があります。:'where.is' => x有効ですが無効です'where.is': x。Ruby 2.2ではこの問題が修正されているので、Ruby 2.2以降で言うことができます'where.is': x
  2. 有効なラベルではないシンボルにはロケットを使用する必要があります。:$set => x有効ですが無効です$set: x。Ruby 2.2以降では、この問題を引用符で回避できます'$set': x。正しいことを実行します。
  3. ハッシュではないシンボルであるハッシュを使用する場合は、ロケットを使用する必要があります。's' => x有効ですが、's': xまったく異なるものです。

もちろん、明白な方法で上記の周りをこすることができます:

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

しかし、それは醜いと不必要です。

ロケットは、Rubyのハッシュを損なうことなしにはどこにも行けません。


6
s /過度に劇的で愚か/劇的で挑発的で雄弁なオマージュ/。あなたのポイントの残りは立っています。
dbenhur 2012

15
特定のシナリオで古い構文に依拠する必要がある場合に、新しい構文を使用すると、コードが複雑になるかどうか疑問に思う必要があります。
Dave Rapin

4
@DaveRapin:それが私がロケット以外の構文を気にしない理由です。私はMongoDBの作業のかなりの部分を行っており、非記号をハッシュキーとして使用することが多いh[:s]ので(私が行うことはすべて気にしないでください)、JavaScriptスタイルの構文は意味のない複雑さです。私にとっては、よく考えられていないおかしなアイデアのように思えますが、今はそれとそれに関連する混乱に永遠に悩まされています。
muが短すぎる

8
@DaveRapin a = [0,1,4,9]a = Array.new(4){ |i| i**2 }。なぜ後者を使用する必要があるのに、なぜ前者を使用するのですか?回答:より便利だからです。TIMTOWTDIは言語を複雑にしますが、これはトレードオフです。Luaのコアは非常にエレガントで、簡単に習得できますが、実際にコードを作成するのは面倒です。Rubyには、学習を困難にする特別なケースやカスタム機能がたくさんありますが、プログラミングする喜びがあります。一般的なケースでは、タイプが単純で読みやすいHash-with-symbol-keys表記。
Phrogz、2012年

7
入力するのは楽しくありませんが、私は間違いなくハッシュロケットを好みます。どうして?これは、キーに記号を使用するときはいつでも、コロンで始まる文字列を検索することで、プロジェクトの任意の場所でその記号を検索できることを意味します。私には、実際の文字間の一貫性の欠如は中キーを示すために使用my_hash = {a:1}してmyhash[:a] = 1いる、少なくとも、むしろ迷惑。このように感じるのは私だけではないでしょう。
Huliax 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.