ルビーにコロンを追加して前置することの違いは何ですか?コロンの前置と後ろの違い(:item対アイテム:)
例:
#In rails you often have things like this:
has_many :models, dependent: :destroy
なぜdependent:
は特許コロンを持っていますが、:models
と:destroy
がプリペンドコロンがありますか?違いはなんですか?
ルビーにコロンを追加して前置することの違いは何ですか?コロンの前置と後ろの違い(:item対アイテム:)
例:
#In rails you often have things like this:
has_many :models, dependent: :destroy
なぜdependent:
は特許コロンを持っていますが、:models
と:destroy
がプリペンドコロンがありますか?違いはなんですか?
これはハッシュのキーであるシンボルを定義するためのRuby 1.9の新しい構文であると同じです。
前もって付加されて付加された:
は、symbol
を定義しますが、後者はハッシュの初期化中のみ有効です。
symbolは軽量の文字列定数と考えることができます。
それは前1.9へ
:dependent => :destroy
と同等ですが、ハッシュはやや冗長と入力する厄介である構文で定義された:
hash = {
:key => "value",
:another_key => 4
}
彼らは1.9でそれを簡素化:
hash = {
key: "value",
another_key: 4
}
1.9より前のRubyで使用したいモジュールを作成している場合は、古い構文。
どちらの場合も、コロンはシンボルを示しますが、シンボルを付加することは、シンボルがハッシュのキーである場合には省略されます。
dependent: :destroy
は
:dependent => :destroy
「追加された」コロンは、単に1.9でハッシュを表示する新しい一般的な方法です。
dependent: :destroy
が一方:dependent => :destroy
と同じものであり、「付加」コロンは、Rubyにおけるシンボルデータタイプを示します。
Rubyはあなたがカッコ()
を省略することができますし、いくつかのケースでカーリー{}
ブレースそれは非常に明白ではないかもしれませんが、上記のコードは、実際にこのように見ているので:今
has_many(:models, { dependent: :destroy })
、そのhas_many
を意味し、 1つはシンボル:
、不変の文字列、そしてdependent
がキーでの値を持つハッシュの2つの引数をとります。また:dependent => destroy
と見なすこともできます。
[\ key: "value" \ "と\ key:"値 "ハッシュ表記の間に違いはありますか?](http://stackoverflow.com/questions/8675206/is-there-any-difference-the-key-value-and-key-value-hash-no)は、 –