我在陣列上執行操作,我遇到了一些問題。我複製array_1
分配給array_2
。當我在array_2上進行操作時,uniq
方法會修改原始數組。Ruby 2.3:無法複製數組。原始陣列修改
array_3
是我打算做到,但我不明白爲什麼操作到那裏修改array_1
我需要一個解釋,爲什麼出現這種情況,而且我能做些什麼來防止這種情況的發生。
array_1 = [["Ed","2",],["Ann","2"],["Sue","2"],["Ed","3",],["Ann","3"],["Sue","3"]]
array_2 = array_1.dup
array_2 = array_2.uniq(&:first)
array_3=[]
array_2.each do |a2|
a2.pop
array_3.push(a2)
end
puts array_3
=> [["Ed"], ["Ann"], ["Sue"]]
puts array_1
=> [["Ed"], ["Ann"], ["Sue"], ["Ed", "3"], ["Ann", "3"], ["Sue", "3"]]
http://ruby.about.com/od/advancedruby/a/deepcopy.htm – matt