如何在Ruby中查找类的每个实例

omn*_*nse 15 ruby reflection

有没有办法在Ruby中获取某个类的所有对象?

澄清:

class Pokemon
end

pikatchu = Pokemon.new
charmander = Pokemon.new
Run Code Online (Sandbox Code Playgroud)

那么,有没有办法可以以某种方式检索引用那两个对象(pikatchucharmander)?

我实际上想过通过初始化把它全部推到一个类数组中,但这可能会变大,我假设可能有一个原生的Ruby方法.

Gra*_*yer 29

解决方案是使用ObjectSpace.each_object类似的方法

ObjectSpace.each_object(Pokemon) {|x| p x}
Run Code Online (Sandbox Code Playgroud)

哪个产生

<Pokemon:0x0000010098aa70>
<Pokemon:0x00000100992158>
 => 2 
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅PickAxe第25章