Как найти каждый экземпляр класса в Ruby - PullRequest
15 голосов
/ 27 мая 2011

Есть ли способ получить все объекты определенного класса в Ruby?

Для уточнения:

class Pokemon
end

pikatchu = Pokemon.new
charmander = Pokemon.new

Итак, есть ли способ, которым я мог бы каким-то образом получить ссылки на эти два объекта (pikatchu и charmander)?

На самом деле я думал о том, чтобы поместить все это в массив классов с помощью инициализации, но это потенциально может вырасти, и я предполагаю, что к нему может быть применен собственный подход Ruby.

1 Ответ

28 голосов
/ 27 мая 2011

Решение состоит в том, чтобы использовать ObjectSpace.each_object метод, подобный

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

, который производит

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

Подробности обсуждаются в Книге PickAxe Глава 25

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...