【发布时间】:2012-12-15 18:52:52
【问题描述】:
我正在研究一些在 Ruby (MRI 1.9.3) 中深度复制对象的技术。
我遇到了以下示例,但我不确定#dup 方法的实现。
我对其进行了测试,它确实有效,但我不理解该方法的逻辑步骤,因此我在自己的代码中使用它并不方便。
声明@name = @name.dup 指的是副本inside 的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
【问题讨论】: