我是红宝石的新手,想知道我该怎么做呢
例如:
a = [1,2,3,4]
b = []
b.push(a)
a.pop
a.pop
print b
# => [[1,2]]
我期待b保持[[1,2,3,4]]
似乎是通过引用推入b而不是值。无论我将来做什么,我都希望保持原样;我如何在Ruby中执行此操作?答案 0 :(得分:3)
a
是一个数组引用,因此要将其值推送到b
,您需要复制它:
b.push(a.dup)
这类似于在C中使用strdup
,其中字符串是指针。
答案 1 :(得分:1)
您可以使用splat
运算符并将a
的元素推送到b
而不是整个数组a
。
b.push(*a)
#=> [1, 2, 3, 4]
如果您想推送数组,请使用
b.push([*a])
#=> [[1, 2, 3, 4]]