From: Yukihiro Matsumoto Date: 2006-11-06T10:38:02+09:00 Subject: [ruby-dev:29850] Re: Module duplicate まつもと ゆきひろです In message "Re: [ruby-dev:29849] Re: Module duplicate" on Mon, 6 Nov 2006 10:14:12 +0900, Shugo Maeda writes: |Mが2回現れるのは気持ち悪いと思うのですが、 それは主観なんでちょっと置いといて。 # 前田くん向けの説明: # (コピーしないけど)Satherのinlcudeであると思えば気持ち悪く # ないかも。 |>  導入の理由は、include したことをしっかりと影響を与えるため(上記例では |> C2 で M を include したら、C2 のメソッド m より先に M のメソッド m が呼 |> ばれて欲しい、とか)ということです。 | |ということだと、他の選択肢は | |[C2, M, C1, Object, Kernel, BasicObject] | |になるのでしょうか。 これはありえないと思います。C1がMに依存してたら動かなくなり ますから。 |なので、1.8の挙動の方が好ましいような気がするのですが、この変更が原因 |で動かなくなっているコードがないのなら、問題ないのかなあ。 その場合、C2はMを直接includeしたのに、見えるのはC1で「修飾」 されたメソッドになりますよね。overrideとかaliasとかundefとか。 それは嬉しくないんじゃないかなあ。で、このケースだとそうでも ないんですが、 module M1 end module M2 include M1 end module M3 include M1 end class C1 include M2 end class C2