Rubyリファレンス: Home

extend_object (Module)

Edit   History

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

def extend_object(obj)
  code...
end

extend_objectメソッドは、extendメソッドによってモジュールが特定のオブジェクトに取り込まれる前に呼び出されます。引数objにはモジュールを取り込むオブジェクトが入ります。

extend_objectメソッドはextendメソッドによって呼び出されます。Moduleクラスのオリジナルのextend_objectextend機能の本体で、自身のモジュールをオブジェクトの特異クラスにインクルードします。extend_objectを上書きするときは、superを呼び出さないとモジュールはオブジェクトに取り込まれません。

次の例では、extend_objectの中でメッセージを表示したあとで、superextend機能の本体を呼び出しています。

module Double
  def double
    self + self
  end
  
  def self.extend_object(obj)
    puts "#{obj} is going to get #{self}'s methods!"
    super
  end
end
 
str = "hello"
str.extend(Double)
hello is going to get Double's methods!

関連項目