クラスとオブジェクト
オブジェクトの複製
Ruby では dup と clone でオブジェクトをシャローコピーできます。 ネストしたオブジェクトを含む場合はディープコピーが必要です。
dup と clone の違い
dupシャローコピー。frozen 状態はコピーされない。特異メソッドはコピーされない。cloneシャローコピー。frozen 状態もコピーされる。特異メソッドもコピーされる。Rubyエディタ
ディープコピーの実装
Marshal を使うとディープコピーができます。ただし Marshal.dump できないオブジェクト(IOなど)には使えません。 initialize_copy をオーバーライドして独自のコピーロジックを実装することも一般的です。
Rubyエディタ