我有一些无法理解的浅表副本的概念和#dup
方法.dup是否真的创建了一个浅拷贝?
我有这样的代码
class MyObject
end
myObject1 = MyObject.new
myObject2 = MyObject.new
我知道这监守我为对象进行相等性测试将打印错误,不珍惜平等
p myObject1 == myObject2
但根据的浅表副本definition
.dup生成obj的浅拷贝 - obj的实例变量被复制,但不是它们引用的对象。
我曾预计此项打印真实的,但它也打印假
p myObject1 == myObject1.dup
是不是定义错了呢?不应该myObject1.dup
和instance variable
指向与myObject1
相同的对象,但它显然不是?
不正是我是问。我的意思是说,这个定义是不是'.dup产生了一个obj的浅拷贝 - obj的实例变量被复制,而不是它们引用的对象。'暗示'p myObject1 == myObject1.dup'应该打印真实?基本上,语言听起来像'.dup'复制指针,但它们仍指向同一个对象。得到我现在要求的? –
哦,上帝,我是个白痴。非常感谢! –
但是'myObject'只是一个变量(不是实例变量),文档说'dup'复制了*'obj'中的实例变量*。 'myObject1'和'myObject1.dup'是完全不同的对象,你没有提供你自己的'=='所以'myObject1 == myObject1.dup'是'false'。我还给我的答案加了一点澄清,所以我会忽略那个白痴。 –