2011-05-26 29 views
14

¿Hay alguna manera de obtener todos los objetos que son de una cierta clase en Ruby?Cómo encontrar cada instancia de una clase en Ruby

Para aclarar:

class Pokemon 
end 

pikatchu = Pokemon.new 
charmander = Pokemon.new 

Así que, ¿hay alguna manera de alguna manera podría recuperar referencias esos dos objetos (pikatchu y charmander)?

De hecho, pensé en meter todo en una matriz de clases a través de la inicialización, pero que potencialmente podría crecer a gran escala, y estoy asumiendo que podría haber un enfoque nativo de Ruby.

Respuesta

26

La solución es utilizar ObjectSpace.each_object método como

ObjectSpace.each_object(Pokemon) {|x| p x} 

que produce

<Pokemon:0x0000010098aa70> 
<Pokemon:0x00000100992158> 
=> 2 

detalles se discuten en el PickAxe book Capítulo 25

Cuestiones relacionadas