将Array与散列项一起使用

时间:2018-05-23 10:30:37

标签: ruby

我有一个哈希:

h = {a: 1, b: 2}

使用

a = Array(h)

我的期望是a是一个数组而h是一个a的项:[{a:1,b:2}]

a实际上是[[:a, 1], [:b, 2]]

问题是,如何使用a获得我期望的Array()

3 个答案:

答案 0 :(得分:6)

我愿意

a = [h]

但如果你坚持使用Array,那么你可以这样做(使用Rails / ActiveSupport):

a = Array.wrap(h)

正如Tom Lord在评论中提到的那样,你得到了你得到的结果,因为Array()(及其兄弟,如Integer())是转换函数 。他们接受输入并尝试将其转换为所需类型。而你想要别的东西。

答案 1 :(得分:0)

h = {a: 1, b: 2}
a = []

a.push h

a<<h

输出

p a
[{:a=>1, :b=>2}]

答案 2 :(得分:0)

您可以使用小胡子语法:

Array.new(1) {{ a: 1, b: 2 }}
#⇒ [{:a=>1, :b=>2}]