Ruby Tips!

RubyのTipsを紹介します

クラスメソッドを定義する4つの方法

クラス定義中でクラス名.メソッド名の形でクラスメソッドを定義できる。

class Clazz
  def Clazz.class_method
    # 処理
  end
end

クラスオブジェクトはクラス定義中でselfで参照できるため、クラス名の代わりにselfと書いても良い。

class Clazz
  def self.class_method
    # 処理
  end
end

クラスメソッドはクラスオブジェクトのインスタンスメソッドである。以下のように特異クラスを開いてインスタンスメソッドを定義してもクラスメソッドを定義できる。

class << Clazz
  def class_method
    # 処理
  end
end

直接クラスメソッドを定義する以外に、モジュールを定義して、それをクラスからextendする方法もある。

module Mod
  def class_method
    # 処理
  end
end

class Clazz
  extend Mod
end