高橋です。お答え頂きありがとうございます。 <E10CHdf-0000Ep-00 / ev.netlab.co.jp>の記事において matz / netlab.co.jpさんは書きました。 >> MainModuleでConstをインクルードしてもそれはSubModuleには引き >> 継がれないからです.MainModuleとSubModuleには継承関係はあり >> ませんから. なるほど。しかしそうするといっそう、 >> | そもそも、module 内で module を定義するメリットって何でしょう? この疑問の答えが分からなくなります。つまり、 module MainModule .... module SubModule .... end end というのと module MainModule .... end module SubModule .... end と書いた場合との違いが分かりません。 好みの問題と言われればそれまでですが、 何かメリットがあって最初のような書き方をするのなら それを知りたいです。 >> |# なんでこんなこと聞くかというと、TkBalloon クラスを自作してたら >> |overrideredirect のところで Uninitialized constant None と >> |怒られたからなんです。 >> >> Tk::WmはTkCommを既にincludeしているクラスにincludeして使うこ >> とを想定していました.TkBalloonクラスでのWmの使い方によりま >> すが,明示的に include TkComm しておいた方が良い場合がありま >> したでしょうか? 例えば、Window Manager の飾りとかのない hello world スクリプトとして、 #!/usr/local/bin/ruby require 'tk' root = TkRoot.new root.overrideredirect 1 TkButton.new(root) { text 'hello' command proc { puts 'Hello World!'; exit } pack } Tk.mainloop と書くと、Uninitialized constant None と怒られます。 はじめに include TkComm を入れると動きますが、 他の Wm module の method は無くても動くのに(例えば title など)、 overrideredirect などの None を使っている method だけは 使う前に include TkComm を入れなくてはいけないというのは不便ですし、 分かりにくいです。 それとも、書き方が間違っているんでしょうか? ------------------------------------------------------------------- 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 -------------------------------------------------------------------