From: matz@... (Yukihiro Matsumoto) Date: 2002-02-19T15:41:39+09:00 Subject: [ruby-dev:15963] Re: [BUG?] include after module definition and extend module まつもと ゆきひろです In message "[ruby-dev:15939] Re: [BUG?] include after module definition and extend module" on 02/02/18, Tanaka Akira writes: |(最近 cycle が禁止された覚えがあるので) module の関係は DAG になるわけ |ですが、これをどんな順番に並べるかはどう規定されているんでしょう? includeした時点でのincludeした順です。 |というように A と B の順番が C と B で反転するのは意図されてないんじゃ |ないかという気がします。 石塚さんにも説明したように現時点ではincludeした時点での順序 しか考慮していませんので、 module C; include B; end によって C の先祖に B が module B; include A; end によって B の先祖に A が追加され、 module C; include B; end によって再度 B を追加しようとするものの、それはすでに存在す るので、B の先祖をチェックし、Aはまだ追加されていないので、 先祖に追加するという処理の結果になります。 で、逆転するのは考えていなかったのですが(というか、正直なと ころincludeされたモジュールに先祖が後から追加されたケースに は一般的に考察が不足)、これはやっぱり [C, B, A] となるようにしたほうが良いんでしょうねえ。どういう具体的な手 順になるのか考えてみます。 まつもと ゆきひろ /:|)