在Ruby中,为什么Hash [:a,1]和Hash [[[:a,1]]]给出相同的结果{:a => 1,而Hash [[:a,1]]给出一个空哈希?

时间:2010-09-17 00:22:29

标签: ruby hash

 > Hash[:a,2,:b,4]
 => {:a=>2, :b=>4} 

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

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

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

1 个答案:

答案 0 :(得分:8)

您可以通过两种方式传递键值对:

  1. 直接作为Hash::[]的参数,键和值交替显示
  2. 作为对数组,每个对由包含键和值
  3. 的数组表示

    第一个表单适合1,第二个表单适合1,第四个表单适合2,但第三个表单不适合(它由单个数组组成,但:a和{{1}都不包含}是一个键值对。)

    第二种形式有用的原因是因为这是你倾向于从Hash的Enumerable方法得到的 - 数组中的键值对数组。所以你可以写1,你最终会以你想要的方式改变哈希。