ハロの外部記憶インターフェイス

そろそろ覚える努力が必要かも…

特異クラス

インスタンス化したクラスに追加メソッドを適用

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
  1. クラス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"]