Weakref 有不同的object_id?
Weakref has a different object_id?
为什么对象的 weakref 与对象本身具有不同的 object_id?
主要
obj = {}
weakobj = WeakRef.new(obj)
puts weakobj.object_id
puts obj.object_id
输出
22206940
22207020
为什么这两个数字不同?
obj
和 weakobj
都是对象。它们不是同一个对象。并且两个不同的对象不能共享一个 ID
因为它们是不同的对象。
从控制台检查 obj
和 weakobj
的 class,例如 obj.class
和 weakobj.class
。你会看到不同。
为什么对象的 weakref 与对象本身具有不同的 object_id?
主要
obj = {}
weakobj = WeakRef.new(obj)
puts weakobj.object_id
puts obj.object_id
输出
22206940
22207020
为什么这两个数字不同?
obj
和 weakobj
都是对象。它们不是同一个对象。并且两个不同的对象不能共享一个 ID
因为它们是不同的对象。
从控制台检查 obj
和 weakobj
的 class,例如 obj.class
和 weakobj.class
。你会看到不同。