简短版本:类 的默认inspect
方法显示对象的地址。* 如何在inspect
我自己的自定义方法中执行此操作?
*(要清楚,我想要你通常会得到的 8 位十六进制数inspect
。我不关心实际的内存地址。我只是称它为内存地址,因为它看起来像一个。我知道 Ruby内存安全。)
长版: 我有两个课程,Thing
并且ThingList
. ThingList
是Array
专门设计用于保存事物的子类。由于 Things 的性质以及它们在我的程序中的使用方式,Things 有一个实例变量@container
,它指向ThingList
保存Thing
.
两个事物可能具有完全相同的数据。因此,当我调试应用程序时,我能够可靠地区分两个事物的唯一方法是使用inspect
,它会显示它们的地址。但是,当我inspect
aThing
时,我会得到一页又一页的输出,因为inspect
将递归检查@container
,导致列表中的每个事物也被检查!
我需要的只是该输出的第一部分。我怎样才能编写一个自定义inspect
方法Thing
来显示这个?
#<Thing:0xb7727704>
编辑: 我刚刚意识到默认值就是to_s
这样做的。我之前没有注意到这一点,因为我有一个自定义to_s
,可以提供有关对象的可读详细信息。
假设我不能使用to_s
,我必须编写一个自定义inspect
。