2012-04-30 3 views

答えて

8

実際には違うわけではありません。違った表示をしているだけです。 {文字はシンボルの先頭にすることはできないので、引用符で囲みます。 -のシンボルを作成したい場合は、減算演算子として解釈されるため、これと同じことです。実際には、IRBに行き、引用符が実際にシンボルに影響を与えないことをテストすることができます。

:[] == :"[]" #=> true 

ので、基本的には、一つは短い形式を使用することができ、もう一方はパーサがそれを理解できるように、より冗長にする必要があります。しかし、2つの意味や形には本質的な違いはありません。

+1

引用符で囲まれたシンボルリテラルは、補間を直接使ってシンボルを構築する場合にも便利です。 'foo = 42; p: "@#{foo}" == "@#{foo}"。to_sym#=> true' – Phrogz

4

[]の文字列表現は{} "}、{" での "[]" との文字列表現であるため。ちなみに、:[]:"[]"に等しい。違いは、シンボル:"[]"をかっこなしで書くことができますが、:"{}"の場合は実行できません。Rubyの構文では禁止されています。

関連する問題