我不确定在和的文档中“......但不是他们引用的对象”的含义。ruby
rubinus
在ruby-doc中,有解释#clone
和#dup
行为说:
产生 obj 的浅拷贝——拷贝 obj 的实例变量,但不拷贝它们引用的对象。复制 obj 的冻结和污染状态。另请参阅 Object#dup 下的讨论。
在Rubinius的实现中重复相同的内容:
复制实例变量,但不递归复制它们引用的对象。复制污点。
我尝试使用以下代码,但行为出乎我的意料。
class Klass
attr_accessor :array
end
s1 = Klass.new
ar = [1, 2, 3]
s1.array = [ar]
s2 = s1.clone
# according to the doc,
# s2.array should be initialized with empty Array
# however the array is recursivley copied too
s2.array.equal? s1.array # true