まつもと ゆきひろです

In message "[ruby-list:2664] Re: help"
    on 97/04/07, sinara / blade.nagaokaut.ac.jp <sinara / blade.nagaokaut.ac.jp> writes:

|原です。

|一方、同じ名前のメッソッドを複数のモジュールで定義して、多
|重にインクルードできますよね。しかも上書きされる前のメッソ
|ッドの内容を忘れることはなく、何重にも super で呼び出せる。

そうです.モジュールはスタッカブルなんです.

In message "[ruby-list:2665] $_-module [Re: help ]"
    on 97/04/07, 石塚圭樹 <keiju / shljapan.co.jp> writes:

|けいじゅ@SHLジャパンです. 

|>   自クラス -> includeされたモジュール -> スーパークラス
|>
|>になっています.
|
|もっと正確には:
|
|自クラス -> includeされたモジュール -> スーパークラス -> スーパークラ
|スでincludeしたモジュール -> ...
|
|でいいんですよね?

もっと正確には

  自クラス -> 自クラスでincludeされたモジュール群 
	-> スーパークラス -> スーパークラスでincludeしたモジュール群 -> ...

です.includeするということはその時点でのモジュールの連鎖の
どこかにモジュールが存在することしか保証しないことに注意して
ください.

|やっと話しが元に戻って, 気になることについてですが, トップレベルでイン
|クルードされると method_missing()を利用した Proxyクラスなどは動作が変
|わることになりますね. つまり, $_-moduleがあったとして, それをトップ
|レベルでインクルードするとStringを利用したProxyクラスなどは動作が異なっ
|てくることになりますね. こういう現象は問題ある/ない??

「定義されているわけだからmethod_missingが呼ばれない」という
問題ですね.これはなかなかむずかしい問題をはらんでいますね.
現時点では「注意して使ってください」としかいえないですけど.

				まつもと ゆきひろ /:|)