在Ruby的文档的dup
说:
在一般情况下,
clone
并dup
可能在派生类不同的语义.虽然clone
用于复制对象(包括其内部状态),但dup
通常使用后代对象的类来创建新实例.
但是当我做一些测试时,我发现它们实际上是相同的:
class Test
attr_accessor :x
end
x = Test.new
x.x = 7
y = x.dup
z = x.clone
y.x => 7
z.x => 7
Run Code Online (Sandbox Code Playgroud)
那么这两种方法有什么区别?