includeとextend

Moduleをクラスに追加する場合includeとextendがある。
includeはクラスに追加するだけ。
C言語のincludeにちょっと似ている。


extendはこの前refeで発見した。
調べて自分が理解した範囲では、Moduleのメソッドをselfの特異メソッドとして追加する。


以下のようになる。

module Hoge
    def hoge
        "hoge"
    end
end

class Foo
    include Hoge
end

class Var
    extend Hoge
end

foo = Foo.new
foo.hoge    #=>"hoge"
Foo.hoge    #=>error

var = Var.new
var.hoge    #=>error
Var.hoge    #=>"hoge"