Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Weakref有不同的对象id?_Ruby_Weak References - Fatal编程技术网

Ruby Weakref有不同的对象id?

Ruby Weakref有不同的对象id?,ruby,weak-references,Ruby,Weak References,为什么一个对象的weakref与对象本身具有不同的对象id Main obj = {} weakobj = WeakRef.new(obj) puts weakobj.object_id puts obj.object_id 输出 22206940 22207020 为什么这两个数字不同?obj和weakobj都是对象。它们不是同一个对象。两个不同的对象不能共享一个IDobj和weakobj都是对象。它们不是同一个对象。两个不同的对象不能共享一个ID,因为它们都是不同的对象。 从控制台(如o

为什么一个对象的weakref与对象本身具有不同的对象id

Main

obj = {}
weakobj = WeakRef.new(obj)
puts weakobj.object_id
puts obj.object_id
输出

22206940
22207020

为什么这两个数字不同?

obj
weakobj
都是对象。它们不是同一个对象。两个不同的对象不能共享一个ID

obj
weakobj
都是对象。它们不是同一个对象。两个不同的对象不能共享一个ID,因为它们都是不同的对象。
从控制台(如
obj.class
weakobj.class
)检查
obj
weakobj.class
的类别。你会看到区别。

因为它们都是不同的对象。
从控制台(如
obj.class
weakobj.class
)检查
obj
weakobj.class
的类别。您将看到差异。

它们是不同的对象,因此具有不同的对象ID。从object_id上的文档中可以看到:“没有两个活动对象共享一个id。”它们是不同的对象,因此具有不同的object_id。在对象id上的文档中:“没有两个活动对象将共享一个id。”