2010-09-17 85 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

相关问题