2 番目の手法のコロンは構文の一部ですか、それとも文字列の一部ですか? また、それらが文字列の一部にすぎない場合、文字列を引用符で囲まないのはなぜですか?
Rubydoc を見ると、Hash::[]
メソッドには 3 つの形式があることがわかります。
Hash[ key, value, ... ] → new_hash
Hash[ [ [key, value], ... ] ] → new_hash
Hash[ object ] → new_hash
あなたの特定の例は、オブジェクトのリストがキーと値のペアとして解釈される最初のケースのインスタンスです。だから呼び出す:
Hash[a, b, c, d, e, f]
ペアになります:
SO のいくつかのトピックを簡単に確認:
できる構文に混乱していると思います。要約すると、この場合、 はオブジェクトを構築します。:
Symbol
結論は:
Hash[:punch, 99, :kick, 98, :stops_bullets_with_hands, true]
次のハッシュとして表すことができます。
{
:punch => 99,
:kick => 98,
:stops_bullets_with_hands => true
}
ここで:punch
、:kick
と:stops_bullets_with_hands
は記号 と99
、98
およびtrue
対応する値です。
Hash#[]
値を返すには、次のようなメソッドを使用できます。
chuck_norris[:punch] # 99
chuck_norris[:kick] # 98
chuck_norris[:stops_bullets_with_hands] # true
#to_s
メソッドを介してシンボルを文字列に変換できることに注意してください。
:punch.to_s # "punch"
:kick.to_s # "kick"
:stops_bullets_with_hands.to_s # "stops_bullets_with_hands"