Ruby Weakref有不同的对象id?
为什么一个对象的weakref与对象本身具有不同的对象id MainRuby 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
obj = {}
weakobj = WeakRef.new(obj)
puts weakobj.object_id
puts obj.object_id
输出
22206940
22207020
为什么这两个数字不同?
obj
和weakobj
都是对象。它们不是同一个对象。两个不同的对象不能共享一个IDobj
和weakobj
都是对象。它们不是同一个对象。两个不同的对象不能共享一个ID,因为它们都是不同的对象。
从控制台(如
obj.class
和weakobj.class
)检查obj
和weakobj.class
的类别。你会看到区别。因为它们都是不同的对象。
从控制台(如
obj.class
和weakobj.class
)检查obj
和weakobj.class
的类别。您将看到差异。它们是不同的对象,因此具有不同的对象ID。从object_id上的文档中可以看到:“没有两个活动对象共享一个id。”它们是不同的对象,因此具有不同的object_id。在对象id上的文档中:“没有两个活动对象将共享一个id。”