- extend(*modules) -> self[permalink][rdoc][edit]
- 
引数で指定したモジュールのインスタンスメソッドを self の特異メソッドとして追加します。 Module#include は、クラス(のインスタンス)に機能を追加しますが、extend は、ある特定のオブジェクトだけにモジュールの機能を追加したいときに使用します。 引数に複数のモジュールを指定した場合、最後の引数から逆順に extend を行います。 - [PARAM] modules:
- モジュールを任意個指定します(クラスは不可)。
- [RETURN]
- self を返します。
 module Foo def a 'ok Foo' end end module Bar def b 'ok Bar' end end obj = Object.new obj.extend Foo, Bar p obj.a #=> "ok Foo" p obj.b #=> "ok Bar" class Klass include Foo extend Bar end p Klass.new.a #=> "ok Foo" p Klass.b #=> "ok Bar"extend の機能は、「特異クラスに対する Module#include」と言い替えることもできます。ただしその場合、フック用のメソッドが Module#extended ではなく Module#included になるという違いがあります。 # obj.extend Foo, Bar とほぼ同じ class << obj include Foo, Bar end[SEE_ALSO] Module#extend_object,Module#include,Module#extended