3

Ruby では、これら 2 つの操作が空の配列とハッシュで異なるのはなぜですか?

空の配列:

[].to_s.to_sym => :[] 

空のハッシュ:

{}.to_s.to_sym => :"{}"
4

2 に答える 2

8

それらは実際には異なっていません。表示方法が異なっているだけです。文字を記号の先頭にすることは{できないため、引用符で囲みます。を含むシンボルを作成する場合と同じです。そうし-ないと、減算演算子として解釈されるためです。実際、IRB にアクセスして、引用符が実際にシンボルに影響を与えていないことをテストできます。

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

したがって、基本的に、一方は短い形式を使用でき、もう一方はパーサーが理解できるように、より詳細にする必要があります。しかし、両者の意味や形に本質的な違いはありません。

于 2012-04-30T21:28:35.837 に答える
4

[] の文字列表現は「[]」であり、{} の文字列表現は「{}」であるためです。ちなみに:[]は に等しい:"[]"。違いは、シンボル:"[]"を括弧なしで記述できるが、for はできないということです:"{}"。Ruby の構文ではそれが許可されていません。

于 2012-04-30T21:27:27.777 に答える