> Hash[:a,2,:b,4]
=> {:a=>2, :b=>4}
> Hash[:a,1]
=> {:a=>1}
> Hash[[:a,1]]
=> {}
> Hash[[[:a,1]]]
=> {:a=>1}
最佳答案
您可以通过两种方式传递键值对:
- 直接作为
Hash::[]
的参数,键和值交替 - 作为一个数组对,每个数组由一个包含键和值的数组表示
第一种形式适合 1,第二种形式适合 1,第四种形式适合 2,但第三种形式也不适合(它由一个数组组成,但既不是 :a
也不是1
是一个键值对)。
第二种形式之所以有用,是因为这是您倾向于从 Hash 的 Enumerable 方法中获得的东西——数组中的键值对数组。所以你可以写 Hash[some_hash.map {|k, v| [k, v+1]}]
最终你会得到一个按照你想要的方式转换的哈希。
关于ruby - 在 Ruby 中,为什么 Hash[:a, 1] 和 Hash[[[ :a, 1]]] 给出相同的结果 { :a => 1}, 而 Hash[[ :a, 1]] 给出一个空哈希?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3731870/