gpt4 book ai didi

ruby - ObjectSpace.each_object 返回的枚举器是否按对象创建时间排序?

转载 作者:太空宇宙 更新时间:2023-11-03 18:11:24 26 4
gpt4 key购买 nike

ObjectSpace.each_object(ExampleClass) 返回 ExampleClass 的所有实例的枚举器。此枚举器是否保证按对象创建时间排序?

最佳答案

我认为更传统的做法是这样的:

class A
attr_reader :instance_id

def initialize
new_id = (self.class.last_instance_id || self.class.first_id-1) + 1
self.class.instance_variable_set(:@last_instance_id, new_id)
@instance_id = new_id
end

def self.set_first_id(first_id)
@first_id = id
end

singleton_class.send(:attr_accessor, :first_id)
singleton_class.send(:attr_reader, :last_instance_id)
end

A.first_id = 0
a0 = A.new #=> #<A:0x007fe2bb8c3de0 @instance_id=0>
a0.instance_id #=> 0

a1 = A.new #=> #<A:0x007fe2bb8b87d8 @instance_id=1>
a1.instance_id #=> 1

a2 = A.new #=> #<A:0x007fe2bb8aa2c8 @instance_id=2>
a2.instance_id #=> 2

A.last_instance_id #=> 2

关于ruby - ObjectSpace.each_object 返回的枚举器是否按对象创建时间排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33552586/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com