0
私はvar配列を持っています。ある変数を別の変数にコピーして、それらを互いに独立させる方法
arrays = [[15, 2, 3], [9, 1, 2], [5, 3, 0]]
新しいvarソートにコピーします。期待される結果は、私はvarが
sorted_clone = arrays.clone
sorted_clone.each do |i|
i.sort!
end
p arrays
p sorted_clone
VAR配列を変更せずにソートソートすることはできません
[[15, 2, 3], [9, 1, 2], [5, 3, 0]]
[[2, 3, 15], [1, 2, 9], [0, 3, 5]]
である私はまた、両方のための結果は
同じであるarrays = [[15, 2, 3], [9, 1, 2], [5, 3, 0]]
sorted_dup = arrays.dup
sorted_dup.each do |i|
i.sort!
end
p arrays
p sorted_dup
を試してみました
[[2, 3, 15], [1, 2, 9], [0, 3, 5]]
[[2, 3, 15], [1, 2, 9], [0, 3, 5]]
'map'と、おそらく新しい割り当てを使用してください。 –
オブジェクト「obj0」の「ディープ・コピー」「obj1」は、「obj1」への変更が「obj0」を変更しないという特性を有する。 @ Jokesterの答えが示すように、配列の配列の深いコピーを作ることはかなり簡単です。しかし、配列やハッシュの複数レベルのネストがある場合など、複雑なオブジェクト 'obj0'のディープコピーを作成する必要があることがあります。 (Marshal)(https://ruby-doc.org/core-2.4.0/Marshal.html)モジュールのメソッドを使用することです:obj1 = Marshal.load(Marshal .dump(obj0)) 'を実行します。 –