From: matz@... (Yukihiro Matsumoto) Date: 2003-06-27T22:51:27+09:00 Subject: [ruby-list:37831] Re: reference from nested class to a constant in a module included by the parent class まつもと ゆきひろです In message "[ruby-list:37830] reference from nested class to a constant in a module included by the parent class" on 03/06/27, NISHIMATSU Takeshi writes: |ネストしたクラスから親クラスでincludeしたModule内の定数を参照 |する場合, 下の例のように モジュール名:: をつけなければNameError |になるようです. 直感的には モジュール名:: を省略できてもよいと |思うのですがどうでしょう. それともなにか理由があるのでしょうか. あるクラスから見える定数は 自分で定義されたもの その外側のクラスで定義されたもの そのまた外側で定義されたもの(以下トップレベルまで続く、トップレベル含まない) スーパークラスで定義されたもの そのスーパークラスで定義されたもの(以下Objectまで続く、Object含まない) です。外側のクラスにincludeされているモジュールで定義されて いる定数はこの条件に合致しませんので直接参照できません。 この理由は * 参照できる定数をできるだけ静的に解決したい * 参照できる定数をできるだけ定義が直接見えるものに限定したい からです。