Rubyリファレンス: Home

included (Module)

Edit   History

標準クラス・モジュール > Module > included

def included(klass)
  code...
end

includedメソッドは、includeメソッドによってモジュールが他のモジュールやクラスにインクルードされたあとに呼び出されます。引数にはモジュールをインクルードするクラスやモジュールが入ります。

module Feature
  def self.included(klass)
    puts "#{klass} has included #{self}!"
  end
end
 
class Container
  include Feature
end
Container has included Feature!

Rubyではモジュールをインクルードしても、モジュールメソッド(モジュールの特異メソッド)はクラスには継承されませんが、次のようにincludedの中でextendメソッドを呼び出すことでモジュールメソッドをクラスメソッドとして使えるようにできます。

module Feature
  def method_i
    "Instance Method"
  end
  
  module ClassMethods
    def method_c
      "Class Method"
    end
  end
  
  extend ClassMethods
  
  def self.included(klass)
    klass.extend ClassMethods
  end
end
 
class Container
  include Feature
end
 
puts Container.new.method_i
puts Container.method_c
Instance Method
Class Method

関連項目