Rubyメモ

ディープコピー

最終更新:

匿名ユーザー

- view
管理者のみ編集可

deep copy


Rubyの変数は参照型になってるらしい。

array1 = [1,2,3,4]
array2 = array1
array2[0] = 0
puts array1[0]
puts array2[0]

とかやるとarray1[0]も変更されているのが確認できる。

ディープコピーを楽にやりたかったらMarsalを使えば出来る。


array2 = Marshal.load(Marshal.dump(array1)); # deep copy

MarshalはJavaのオブジェクトシリアライゼーションみたいなものかな。
目安箱バナー