2010-09-17 83 views
4
> Hash[:a,2,:b,4] 
=> {:a=>2, :b=>4} 

> Hash[:a,1] 
=> {:a=>1} 

> Hash[[:a,1]] 
=> {} 

> Hash[[[:a,1]]] 
=> {:a=>1} 

回答

8

可以傳遞的鍵 - 值對兩種方式:

  1. 直接作爲參數Hash::[],具有鍵和值的交替
  2. 作爲對的陣列,每個表示由包含一個數組關鍵字和一個值

第一種形式配合1,第二形式配合1,第四形式配合2,但第三形式不適合或者(它由一個單一的陣列,但既不:a也不1是一個鍵值對)。

第二種形式很有用的原因是因爲這就是你傾向於從哈希的Enumerable方法獲得的 - 數組中的鍵 - 值對的數組。所以你可以寫Hash[some_hash.map {|k, v| [k, v+1]}],你最終會以你想要的方式改變哈希。

+0

是的,請查看'Hash [[:a,1],1]'以獲得更多的興趣。 – BaroqueBobcat 2010-09-17 00:32:24

+0

或'Hash [[[0],[]]]'。 – 2010-09-17 00:34:14

+0

'Hash [[[0],[]]]'相當於'Hash [[[0]]]'。對中缺少的第二個元素默認爲「false」。 – Chuck 2010-09-17 00:38:04

相關問題