短いバージョン:クラス のデフォルトのメソッドは、オブジェクトのアドレスを表示します。*独自のカスタムメソッドでinspect
これを行うにはどうすればよいですか?inspect
*(明確にするために、通常から取得する8桁の16進数が必要ですinspect
。実際のメモリアドレスは気にしません。メモリアドレスのように見えるので、単にメモリアドレスと呼んでいます。Rubyはメモリセーフ。)
ロングバージョン: 2つのクラスがThing
ありThingList
ます。 は、 Thingsを保持するために特別に設計されThingList
たのサブクラスです。Array
Thingsの性質とプログラムでの使用方法により、Thingsには、を保持する@container
を指すインスタンス変数があります。ThingList
Thing
2つのThingがまったく同じデータを持つ可能性があります。したがって、アプリケーションをデバッグするとき、2つのThingを確実に区別できる唯一の方法はinspect
、アドレスを表示するを使用することです。ただし、私がinspect
aを実行するThing
と、出力のページごとにページが取得されます。これinspect
は、再帰的に検査するため@container
、リスト内のすべてのThingも検査されるためです。
必要なのは、その出力の最初の部分だけです。inspect
これを表示するだけのカスタムメソッドを作成するにはどうすればよいThing
ですか?
#<Thing:0xb7727704>
編集:to_s
私はデフォルトがまさにこれ を行うことに気づきました。to_s
オブジェクトに関する人間が読める形式の詳細を提供するカスタムがあるため、これは以前は気づいていませんでした。
to_s
を使用できず、カスタムを作成する必要があると想定しますinspect
。