2012-05-02 27 views
17

私はコロンの配置に関して:シンボルとテキストの違いを理解するのに苦労しています。私が理解しているのは、シンボルを使用するとき、このオブジェクトとそれに含まれるものを指しているということです。ここで、text:は変数になるようにテキストに値を割り当てるために使用されます。これは正しいのでしょうか、誰かがその使い方について詳しく説明することができます。ありがとうございました。コロンの配置の違いは何ですか:何かと何か:

+1

記号:値は、それを短縮する方法として、ハッシュ式で表示されますが、私は多くの人がそれを好む見つけることができませんでした。 – texasbruce

答えて

18

:whateverは、その部分を正しく表しています。

あなたはハッシュを使用している、これはあなたが1.8倍のルビーでそれを定義するために使用される方法だった:

{:key => value, :another_key => another_value} 

これはhashrocket構文として知られています。 「キー:」、1.9で、

{key: value, another_key: another_value} 

まだhashrocket構文をロードするの下位互換性があります...しかし:

+2

ありがとう、ありがとう! – Tom

+2

あなたの最後のステートメントは混乱の原因になります。 'key:'はルビのシンボルではないと思いますが、この構文が中括弧の中に来ると、ルビはそれをシンボルとして識別します。また、ハッシュテーブルの構文は、下位互換性のためにのみ提供されています。実際、非記号キーを持つハッシュを定義する場合、ハッシュロケット構文に頼る必要があります。私は新しいjsonスタイルの構文が構文的な砂糖のほうが多いと言います。 – rubyprince

17

{:key => value}があるシンボルであるルビーの1.9倍で、これは次のように変更しましたルビーの古いハッシュ構文、今私たちは、よりJSONのようなものです新しいハッシュの構文を持っているので

{:key => value} 

{key: value} 
と同じです

古いもの、我々はすべてに精通している:

old_hash = {:simon => "Talek", :lorem => "Ipsum"} 

これは、すべての素晴らしく、ダンディですが、それは簡単かつクリーンである可能性があります。 Ruby 1.9のスタイルをチェックアウト、それは一種のJSONに似ている:

new_hash = {simon: "Talek", lorem: "Ipsum"} 

しかし、今は、よく見ると尋ね、「しかし、以前のキーは、今これで何、明示的シンボルでしたか?」。

まあまあですが、新しい表記法は、ハッシュの最も一般的なスタイルのための構文砂糖の一種です。いわゆるハッシュ記号からオブジェクトハッシュです。あなたはIRBでこれを行う場合は、ルビーがキーとして使用される記号で、古い学校のハッシュを返す表示されます:

> new_hash = {simon: "Talek", lorem: "Ipsum"} 
=> {:simon=>"Talek", :lorem=>"Ipsum"} 

あなたのハッシュキーとして任意のオブジェクトを持っている必要がある場合、あなたはまだ持っています古い学校にする。

REF:http://breakthebit.org/post/8453341914/ruby-1-9-and-the-new-hash-syntax

関連する問題