2011-01-11 9 views
32

Rubyを学びながら、私は時々 "=>"演算子に出会った。通常、私は、関数に値を渡すときに頻繁に使用されるように思わRubyでは "=>"とは何を意味し、どのように機能しますか?

:symbol => value 

、それの形でそれを参照してください。その演算子は正確には何ですか?それは何を意味するのですか?それはRubyに組み込まれているのですか、それともRailsやDataMapperのようなさまざまなフレームワークがシンボルクラスに追加しているのでしょうか?シンボルクラスとの関連でのみ使用されていますか?ありがとう。

答えて

39

=>は、ハッシュマップリテラルの値からキーを区切ります。それは、過負荷ではなく、シンボルに具体的に接続されていません。

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

+0

詳細については、Pickaxe [ハッシュのチュートリアルセクション](http://phrogz.net/ProgrammingRuby/frameset.html?content=http://phrogz.net/ProgrammingRuby/tut_containers.html%23hashes)および[ハッシュのリファレンスセクション](http://phrogz.net/ProgrammingRuby/frameset.html?content=http://phrogz.net/ProgrammingRuby/language.html%23hashes)。 Ruby 1では注意してください。代わりに、この 'foo:bar'のようにハッシュにリテラルのキー/値の組を指定することもできます。これは、キーをシンボル':foo'として作成します。 – Phrogz

+0

大きな問題を小さな問題に分割します。連想配列やルビ記号を知ることができれば、ハッシュを理解する上で問題はありません。 – karatedog

+0

だから、ここではDataMapperの プロパティの例だけで明確にすることである:タイトル、文字列、:必要=>真、:タイトル、文字列、:長さ=> 5..200 これは プロパティ(と同じです{:required => true、:length => 5..200}) ? –

11

「ハッシュロケット」と呼ばれるこの演算子は、ルビーハッシュを定義するときに使用することを意味します。

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

注あなたはキーとしてシンボルを使用してハッシュを定義している場合はRuby 1.9の中で、あなたに利用可能な代替構文は、今があること:http://blog.peepcode.com/tutorials/2011/rip-ruby-hash-rocket-syntax

+0

+1の1.9構文です。 –

4

あなたはそれ以上のグーグルを行いたい場合は、=>は、それが(<=>は宇宙船のように見えるのと同じ意味での)ロケットのように見えるので、時々、hashrocketと呼ばれ、それがハッシュで使われています。

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

+0

これは知っておきたいことです。私はGoogle上でそれについての情報をかなり探したが、どこにもいなかった。先端に感謝します。 –

+0

@DustinMartin私は最近、SymbolHoundという検索エンジンに遭遇しました。他の構文の検索が困難な場合に備えてです。 –

4

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

{ 
    a: "A", 
    b: "B" 
} 
+0

ops。ちょうどそれが上記のことに気づいた:) – amrnt

0

In Ruby what does "=>" mean and how does it work?に加えて:

あなたが主になります関数のパラメータを定義するには=>を参照してください。すべてのパラメータが巨大なハッシュにラップされているので、パラメータの正しい順序を覚えておく必要はありません。あなたは

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の慣例に過ぎません。

関連する問題