From: Tanaka Akira Date: 2002-02-19T18:44:46+09:00 Subject: [ruby-dev:15964] Re: [BUG?] include after module definition and extend module In article <1014100898.366150.14204.nullmailer@ev.netlab.jp>, matz@ruby-lang.org (Yukihiro Matsumoto) writes: > include$B$7$?;~E@$G$N(Binclude$B$7$?=g$G$9!#(B $B;~9o=g$G$"$C$F!"9=B$$H$O$"$^$j4X78$J$$$s$G$9$M!#$J$k$[$I!#(B > $B$G!"5UE>$9$k$N$O9M$($F$$$J$+$C$?$N$G$9$,(B($B$H$$$&$+!"@5D>$J$H(B > $B$3$m(Binclude$B$5$l$?%b%8%e!<%k$K@hAD$,8e$+$iDI2C$5$l$?%1!<%9$K(B > $B$O0lHLE*$K9M;!$,ITB-(B)$B!"$3$l$O$d$C$Q$j(B > > [C, B, A] > > $B$H$J$k$h$&$K$7$?$[$&$,NI$$$s$G$7$g$&$M$(!#$I$&$$$&6qBNE*$J $B=g$K$J$k$N$+9M$($F$_$^$9!#(B $B>/$J$/$H$b(B class/module $B$N%0%i%U9=B$$r(B topological sort $B$7$?=gHV$K$O$J$C(B $B$F$$$k$N$,K>$^$7$$$s$8$c$J$$$+$H;W$$$^$9!#(B $B$?$@!"(Btopological sort $B:Q$_$N%j%9%H$r(B merge $B$7$F(B topological sort $B:Q$_(B $B$N%j%9%H$r@8@.$9$k$N$OFq$7$$$N$G$O$J$$$+$H;W$$$^$9!#$+$J$j?<$/9M;!$7!"(B $B$&$^$$@)Ls$r8+$D$1$J$$8B$jIT2DG=$G$J$$$+$H$$$&5$$,$7$^$9!#(B $B=>$C$F!"4pK\$K=>$C$F(B direct super class/module $B$N%j%9%H$rJ]B8$7$F!"JQ(B $B99;~$K(B traverse $B$7$J$*$7$F(B ancestors $B$r:n$j$J$*$9$N$,BEEv$J$H$3$m$G$O(B $B$J$$$+!"$H;W$$$^$9!#(B $B$J$*!"5$$,$D$$$?$N$G$9$,!":#$O(B % ruby -e ' module A; end module B; end module C; include B; end module B; include A; end module A; include C; end p A.ancestors, B.ancestors, C.ancestors ' [A, C, B] [B, A] [C, B] $B$H$$$&$h$&$K(B cycle $B$rH/8+$G$-$J$$$3$H$b$"$k$h$&$G$9!#(B $B$"$H!":n$j$J$*$9J}$NOC$G$9$,!"(BObjectSpace.each_object(Module) $B$@$HFC0[(B $B%/%i%9$,=P$F$3$J$$$N$G!"(Bextend $B$5$l$?(B Object $B$O07$($J$$$N$G$9$,!"8zN((B $BE*$KFC0[%/%i%9$r%j%9%H%"%C%W$9$kJ}K!$C$F$"$k$s$G$7$g$&$+(B? -- [$BEDCf(B $BE/(B][$B$?$J$+(B $B$"$-$i(B][Tanaka Akira] $B!V$U$($m(B! $B$o$+$a$A$c$s:n@o$G$9$(C"=$B!W(B(Little Worker, $B7KM7@84](B)