我正在尋找一種將兩個數組轉換爲單個哈希的方法。我發現這樣的事情:兩個數組哈希組合中的奇怪multiplicator操作符行爲
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]
=> {}
返回不同的值,因爲這些參數看起來相同?
我想我一定會錯過*
運算符。
謝謝。
非常感謝,明白了:) –