まつもと ゆきひろです

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

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

|トップレベルであるモジュールをインクルードするとそこで定義された関数は
|どこからでも参照可能になりますよね.

|この時の include って何をやっているんですか? というか include は正確に
|はどういう働きをするものなのでしょうか?

トップレベルのincludeはmainオブジェクトの特異メソッドで,
Objectクラスにモジュールをincludeします.Objectは全てのクラ
スのスーパークラスですから,includeされたものはどこからでも
参照可能になるわけです.

クラスにモジュールをincludeするとそのモジュールで定義されて
いるメソッドと定数が参照可能になります.メソッドと定数の探索
順序は

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

になっています.モジュールは多重にはincludeされませんから,
includeしたモジュールが既に(たとえばスーパークラスで)include
されていた場合にはなにもおこりません.

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