特異クラスとは
- 継承階層に含まれている名前のない不可視クラス
- インスタンスは生成できない
- クラスメソッドやモジュールから取り込んだメソッドを格納する場所を提供
確認
# クラスメソッド定義時に、クラスの特異クラスが自動生成されメソッドが定義されることの確認
class MyClass
def self.hoge
end
end
# singleton_classで特異クラスを取得できる
p MyClass.singleton_class.instance_methods(false)
# => hoge
# インスタンスに特異メソッド定義時に、インスタンスの特異クラスが自動生成されメソッドが定義されることの確認
a = MyClass.new
def a.fuga
end
# singleton_classで特異クラスを取得できる
p a.singleton_class.instance_methods(false)
# => fuga