07/09/10 06:17:02
>>199
Mで定義されたメソッドはインスタンスメソッドだから、Cでincludeしたらやっぱりインスタンスメソッドとなっちゃうので、クラスメソッドとしては呼び出せない。
クラスメソッドとして使うにはクラスメソッドとして定義する必要があって、そのためには>>207のようにincludeではなくextendを使う。
URLリンク(www.ruby-lang.org)
または、hogeをmodule functionとして定義する。すると、インスタンスメソッドとしても、(M.hogeという形で)クラスメソッドとしても呼び出せる。
module M
module_function
def hoge; :hoge; end
end
class C
include M
HOGE = M.hoge
end
URLリンク(www.ruby-lang.org)