例如:
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]
为什么数组
b
和c
的输出是相同的?如果我想得到数组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 post,
a.dup
是更简单的方法。