Ruby勉強

インターネットの企画職な人がプログラミングを勉強するブログ

Ruby特異クラス/特異メソッド - Silver/Gold試験対策

初期化をせずとも、クラスから直接メソッドを実行できる、クラスメソッド 初期化したクラスに、改めてメソッドを付けたりもできる、特異メソッド。 両者とも、特異メソッドの一形態。

class A
  class << self
    def hoge
      :hoge
    end
  end
end

p A.hoge #=> :hoge
p A.class.method_defined?(:hoge)
p A.singleton_class.method_defined?(:hoge)
# 特異クラスは、class Aのサブクラス
p A.singleton_class #=> A
p A.singleton_class.superclass #=> Object

class B
  def B.bar
    :bar
  end
  def self.fuga
    :fuga
  end
end

p B.bar #=> :bar
p B.fuga #=> :fuga

C = Object.new
class << C
  def foo
    :foo
  end
end
p C.foo

class F
end
f = F.new
def f.baz
  :baz
end
p f.baz #=> :baz