2つの配列を1つのハッシュに変換する方法を探していました。私はこのようなものを見つけました:
a1 = [1,2,3]
a2 = [?A, ?B, ?C]
Hash[*a1.zip(a2).flatten]
Hash[a1.zip a2]
まったく同じことをするので、この構文は少し奇妙だと思いました。しかしそれ以上に、私は*
オペレーターの必要性を理解していません。
オブジェクトを配列などに変換することは知っています(ただし、同じ方法ではないようです[]
)。
私が実行するとき:
a = a1.zip(a2).flatten
=> [1, "A", 2, "B", 3, "C"]
a = *a1.zip(a).flatten
=> [1, "A", 2, "B", 3, "C"]
実際には何も起こりません。私が*
オペレーターについて知っていることでは、これは正常な動作のようです。
それで、なぜ
Hash[*a1.zip(a2).flatten]
=> {1=>"A", 2=>"B", 3=>"C"}
Hash[a1.zip(a).flatten]
=> {}
パラメータが同じように見える場合、異なる値を返しますか?
私は*
オペレーターについて何かが欠けているに違いないと思います。
ありがとう。