Ruby(MRI 1.9.3)でオブジェクトをディープコピーするためのいくつかのテクニックを調べています。
次の例に出くわしましたが、#dup
メソッドの実装についてはよくわかりません。テストして動作しましたが、メソッドの論理的な手順がわからないため、自分のコードで使用するのは快適ではありません。
ステートメントはコピー内@name = @name.dup
のiVarを参照していますか?どのように?見えません。
誰か説明してもらえますか?
また、より良い方法はありますか?
class MyClass
attr_accessor :name
def initialize(arg_str) # called on MyClass.new("string")
@name = arg_str # initialize an instance variable
end
def dup
the_copy = super # shallow copy calling Object.dup
@name = @name.dup # new copy of istance variable
return the_copy # return the copied object
end
end