Короткая версия: Метод inspect
по умолчанию для класса отображает адрес объекта. * Как я могу сделать это с помощью собственного inspect
собственного метода?
*(Для ясности, я хочу, чтобы 8-значный шестнадцатеричный номер вы обычно получали от inspect
. Мне не важен фактический адрес памяти. Я просто называю его адресом памяти, потому что он выглядит как один. Я знаю, что Ruby безопасен для памяти.)
Длинная версия: У меня есть два класса, Thing
и ThingList
.ThingList
- это подкласс Array
, специально разработанный для хранения вещей.Из-за природы вещей и способа их использования в моей программе, у вещей есть переменная экземпляра @container
, которая указывает на ThingList
, который содержит Thing
.
. Это возможно для двухВещи, чтобы иметь точно такие же данные.Поэтому, когда я отлаживаю приложение, единственный способ надежно различить две вещи - это использовать inspect
, который отображает их адрес.Однако когда я inspect
a Thing
, я получаю страницы на страницах вывода, потому что inspect
будет рекурсивно проверять @container
, в результате чего будет проверяться также каждая вещь в списке!
All Iнужна первая часть этого вывода.Как я могу написать собственный inspect
метод для Thing
, который будет просто отображать это?
#<Thing:0xb7727704>
EDIT: Я только что понял, что значение по умолчанию to_s
делает именно это.Я не заметил этого раньше, потому что у меня есть пользовательский to_s
, который предоставляет удобочитаемые подробности об объекте.
Предположим, что я не могу использовать to_s
, и что я должен написать пользовательский inspect
.