特異クラス
インスタンス化したクラスに追加メソッドを適用
def <クラス名>.<新たなメソッド> end
例
class Foo def methodA 1 end end foo1 = Foo.new foo2 = Foo.new def foo1.methodB 2 end foo1.methodB #2 foo2.methodB # NoMethodError
- クラスFooは変わらないまま、インスタンスのみ新しいメソッドが定義される
特異クラスを取得する
singleton_class = class << foo1 self end singleton_class.instance_methods(false) # ["methodA","methodB"]
特異クラスの再オープン
class << インスタンス化されたオブジェクト end
再オープンでメソッドを追加する例
class << foo1 def methodC 3 end end p foo1.methodC #3 singleton_class.instance_methods(false) #["methodA","methodB","methodC"]