クラスメソッドを定義する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