web-dev-qa-db-ja.com

Ruby "=>"は何を意味し、どのように機能しますか?

学習中にRubyときどき "=>"演算子に出くわします。通常、

:symbol => value

そしてseems関数に値を渡すときに頻繁に使用されます。その演算子は正確には何と呼ばれていますか?それは何をしますか/意味しますか? Rubyに組み込まれていますか、それともRailsやDataMapperなどの異なるフレームワークがシンボルクラスに追加するものですか?シンボルクラスと組み合わせてのみ使用されますか? ?ありがとう。

42
Dustin Martin

_=>_は、キーをハッシュマップリテラルの値から分離します。オーバーロード可能ではなく、シンボルに特に接続されていません。

ハッシュマップリテラルの形式は_{key1 => value1, key2 => value2, ...}_ですが、関数の最後のパラメーターとして使用する場合は、中括弧を省略できます。したがって、f(:a => 1, :b => 2)のような関数呼び出しを確認すると、fが1つの引数で呼び出されます。これは、キー_:a_および_:b_と値を持つハッシュマップです_1_および_2_。

49
sepp2k

この演算子が「ハッシュロケット」と呼ばれるのを聞くかもしれません。つまり、Rubyハッシュを定義するときに使用することを意味します。

これはRuby慣れていない場合のハッシュのドキュメントです: http://www.Ruby-doc.org/core/classes/Hash.html

Ruby 1.9では、記号をキーとして使用するハッシュを定義している場合、代わりに利用可能な代替構文があります: http://blog.peepcode.com/tutorials/2011/rip-Ruby-hash-rocket-syntax

12
jmcnevin

ヒント:{:a => "A", :b => "B"}のようなハッシュで使用している場合、Ruby 1.9では、JSONハッシュのように使用できます。

{
  a: "A",
  b: "B"
}
5
amrnt

さらにグーグル操作を行う場合、=>はロケットのように見え(<=>は宇宙船のように見える)、ハッシュで使用されるため、ハッシュロケットと呼ばれることがあります。

または、 SymbolHound を使用することもできます。

4
Andrew Grimm

In Ruby "=>"は何を意味し、どのように機能するか)に加えて

あなたはほとんど=>関数のパラメーターを定義します。これは便利な機能だと考えてください。すべてのパラメーターは巨大なハッシュにラップされるため、パラメーターの正しい順序を覚えておく必要はありません。したがって、次のような単純なヘルパーメソッドがある場合

link_to "My link", my_path, :confirm => "Are you sure?"

これはより良いです

link_to "My link", my_path, null, null, null, null, "Are you sure?"

めったに使用されないパラメーターを使用したいという理由だけで。したがって、ハッシュを使用してパラメーターを渡すことは、Ruby/Railsでの慣例にすぎません。

0
d135-1r43