例如:

a = [1,2,3,4]
b = a
c = a.to_a
a.insert(0,0)  #=> [0,1,2,3,4]
b              #=> [0,1,2,3,4]
c              #=> [0,1,2,3,4]

为什么数组bc的输出是相同的?如果我想得到数组a的副本,而不是引用副本,应该使用哪种方法?

最佳答案

你就可以

b = a.dup

老岗位
如果没有更简单的方法你可以试试这个
b = a.map {|x| x}

它工作
1.9.3-p448 :001 > a = [1,2,3]      => [1, 2, 3]
1.9.3-p448 :002 > b = a            => [1, 2, 3]
1.9.3-p448 :003 > c = a.map{|x| x} => [1, 2, 3]
1.9.3-p448 :004 > a<<0             => [1, 2, 3, 0]
1.9.3-p448 :005 > b                => [1, 2, 3, 0]
1.9.3-p448 :006 > c                => [1, 2, 3]

但这是一个肤浅的复制品。
根据this posta.dup是更简单的方法。

10-05 20:32