18

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

4

2 に答える 2

18

:whateverはシンボルです、あなたはその部分を正しく持っています。

ハッシュを使用している場合、これは1.8xルビーでハッシュを定義するために使用した方法です。

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

これは、ハッシュロケット構文として知られています。ruby 1.9xでは、これは次のように変更されました。

{key: value, another_key: another_value}

ハッシュロケット構文をロードする下位互換性があります...しかし、1.9では、「key:」はシンボルです

于 2012-05-02T13:49:16.360 に答える
17

これ{:key => value}はrubyの古いハッシュ構文ですが、今ではjsonに似た新しいハッシュ構文があります。

{:key => value}

と同じです

{key: value}

古いもの、私たち全員が精通しているものは次のとおりです。

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

これはすべて素晴らしくてダンディですが、もっとシンプルでクリーンなものになる可能性があります。Ruby1.9スタイルを確認してください。JSONに似ています。

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

しかし今、あなたはよく見て、「しかし、以前はキーは明示的に記号でしたが、これは今何ですか?」と尋ねます。

そうですね、新しい表記法は、最も一般的なスタイルのハッシュ、いわゆるシンボルからオブジェクトへのハッシュの構文糖衣のようなものです。irbでこれを行うと、ルビーが古い学校のハッシュを返し、記号がキーとして使用されているのがわかります。

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

ハッシュキーとして任意のオブジェクトが必要な場合でも、昔ながらの方法で行う必要があります。

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

于 2012-05-02T13:50:56.983 に答える