Rubyでオブジェクトの特異クラスを取得する

特異クラスは,「あるオブジェクト専用の」存在しないようで実はしっかりと存在しているクラス.このクラスに定義されたインスタンスメソッドは特異メソッドになる.特異クラスはSingleton Class, またはEigen Classと呼ばれている.まるで雲をつかむような話だが,これを取得する方法がある.Ruby1.9.2以前だと以下のように記述する.

singleton_class = class << obj; self end

1.9.2以降では,Object#singleton_classが用意され,以下のように記述できる.

obj.singleton_class