初めて参加する高橋と申します。よろしくお願いします。
module について分からないことがあります。
module MainModule
CONST = 1
module SubModule
def const
p CONST
end
end
end
class Hoge
include MainModule
include SubModule
end
hoge = Hoge.new
hoge.const
これは期待通りに 1 を出力してくれますが、
module Const
CONST = 1
end
module MainModule
include Const
module SubModule
def const
p CONST
end
end
end
(以下同じ)
とすると、Uninitialized constant CONST (NameError) と怒られてしまいます。
さらに分からないのは、
class Hoge
include MainModule
include SubModule
end
hoge = Hoge.new
hoge.const
の代わりに
include MainModule
include SubModule
const
とやると、今度はどちらでもちゃんと 1 を出力してくれることです。
これは何故なんでしょうか?
そもそも、module 内で module を定義するメリットって何でしょう?
関連する method をひとまとめにするというなら、
別々に定義するのと変わらないですよね?
先の例では
include MainModule
include SubModule
両方書かないとエラーになるし。
# なんでこんなこと聞くかというと、TkBalloon クラスを自作してたら
overrideredirect のところで Uninitialized constant None と
怒られたからなんです。
一応、
module Tk
module Wm
include TkComm
end
end
としたら動くようになったんですけど、、、
-------------------------------------------------------------------
TAKAHASHI Hitoshi
Experimental Nuclear Physics Group
Department of Physics, Kyoto University
E-mail: thitoshi / ne.scphys.kyoto-u.ac.jp
URL: http://www.ne.scphys.kyoto-u.ac.jp/~thitoshi/member.html
-------------------------------------------------------------------