From: Tanaka Akira Date: 2001-12-27T20:05:31+09:00 Subject: [ruby-list:33045] Re: [][][] macro Ruby In article , "=?iso-2022-jp?B?GyRCMGY+ZRsoQiAbJEI5QDBsGyhC?=" writes: > Ruby$B$K$O!"%^%/%m$N$h$&$JCV$-49$($,=PMh$?$iJXMx$+$J$H;W$$$^$7$?$,!"(B > $B=OCN$7$F$*$j$^$;$s$N$G%9%^!<%H$J > foo[1][2][3] > > $BDj5A$9$k%a%=%C%I$O!"0J2<$N$H$*$j$G$9!#(B > def ????????????? > foo1(1,2) + foo2(3) > end > > $BMW$O!";H$&$H$-!J6&DL$NI=5-K!!K$O!"(B foo[1][2][3]$B$H$9$k$,(B > $B4{B8$N4X?t$NMxMQ$G!"=hM}$9$k$H$$$C$?>l9g$N%a%=%C%I$NDj5A$N;EJ}$,CN$j$?$$$G(B > $B$9!#(B $B$^$C$?$/$b$C$F$*4+$a$7$^$;$s$7!"(Bmacro $B$G$b$"$j$^$;$s$,!"2DG=$G$O$"$j$^$9!#(B % ruby -e ' class A def [](a) Args.new(2) {|b, c| foo1(a,b) + foo2(c) } end def foo1(a,b) a + b end def foo2(c) c end end class Args def initialize(n, &block) @n = n @args = [] @block = block end def [](a) @args << a @n -= 1 if @n == 0 @block.call(*@args) else self end end end p A.new[1][2][3] ' 6 -- [$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)