|
|
||
---------------------------------------------------------- Object#extend obj.extend(module, ...) => obj ------------------------------------------------------------------------ Adds to _obj_ the instance methods from each module given as a parameter. module Mod def hello "Hello from Mod.\n" end end class Klass def hello "Hello from Klass.\n" end end k = Klass.new k.hello #=> "Hello from Klass.\n" k.extend(Mod) #=> #<Klass:0x401b3bc8> k.hello #=> "Hello from Mod.\n"
Object#extend --- extend(module ... ) 引数で指定したモジュールで定義されているメソッドが self の 特異メソッドとして追加されます。あるオブジェクトだけにモジュール の機能を追加したいときに使用します。 module Foo def a 'ok' end end obj = Object.new obj.extend Foo p obj.a #=> "ok" extend の機能は、「特異クラスに対する include」 と言い替えることもできます。 ruby 1.7 feature: 引数に複数のモジュールを指定した場合、最後 の引数から逆順に extend を行います。
* はてなダイアリーキーワード:extend