我正在尋找一些技術來深入複製Ruby(MRI 1.9.3)中的對象。
我遇到了下面的例子,但我不確定#dup
方法的實現。 我測試了它,它確實有效,但我不明白這個方法的邏輯步驟,因此我不會在我自己的代碼中使用它。Ruby:對象深度複製
是否聲明@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
相關:http://stackoverflow.com/questions/8206523/how-to-create-a-deep-copy-of-an-object-in-ruby –