e$B!!$5$5$@$G$9!%e(B
Yukihiro M. wrote:
|e$B!!e(Bblock_given? e$B$O!$B?J,e(B yield e$B$d$ie(B Proc.new e$B$J$I$,=PMh$k$+$I$&$+$r3Ne(B
|e$BG’$9$k$?$a$N$b$N$@$H;W$&$N$G$9$,!$e(Bdefine_method e$B$GDj5A$7$?%a%=%C%I$Ge(B
|e$B$O$I$A$i$b=PMh$^$;$s!J8=>u$G$O!K!%$J$N$G!$e(Bblock_given? e$B$b!$$=$NMQESe(B
|e$B$K$O;H$($J$$0J>e!$%F%9%H%1!<%9$N$h$&$K$9$k$N$O$^$:$$$H;W$&$N$G$9$,!$e(B
|e$B$$$+$,$G$7$g$&$+!%e(B
e$B$(!<$H!"$G$-$J$$$s$G$7$?$C$1!#$=$l$rG’<1$7$F$$$^$;$s$G$7$?!#e(B
lambdae$B$O%V%m%C%/<u$1IU$1$^$9$h$M!#$G!“e(Bdefine_methode$B$GDj5A$5$le(B
e$B$?%a%=%C%I$G$O$G$-$J$$$H8@$&$N$Oe$N?<$$M}M3$,$”$k$s$G$7$ge(B
e$B$&$+!#e(B
e$B!!e(Blambda e$B$He(B define_method
e$B$GDj5A$7$?%a%=%C%I!J0J2<!$e(Bdme$B!K$OF1DxEY$K%Ve(B
e$B%m%C%/$r<u$1IU$1$^$9!%e(B
l = lambda{|&b|
p b
yield #=> #<LocalJumpError: no block given (yield)>
}
class C
define_method(:dm){|&b|
p b
yield #=> #<LocalJumpError: no block given (yield)>
}
end
begin
l.call{}
rescue LocalJumpError => e
p e
end
begin
C.new.dm{}
rescue LocalJumpError => e
p e
end
e$B!!e(BYARV e$B$G$Oe(B yield
e$B$NDj5A$r!$?7$7$$JQ?t%9%3!<%W$r:n@.$9$k%?%$%_%s%0$Ge(B
e$BEO$5$l$?%V%m%C%/>pJs$rMxMQ$7$F9T$&?7$7$$%9%3!<%W$N:n@.!&<B9T$H$7$F$$e(B
e$B$^$9!%e(Bdefine_method
e$B$GDj5A$5$l$?%V%m%C%/$O!$8F$S=P$7$F$b?7$7$$%9%3!<e(B
e$B%W$O:n$i$J$$$?$a!J%V%m%C%/$N30$N%9%3!<%W$r0z$-7Q$0$?$a!K!$e(Bdm
e$B$KEO$7e(B
e$B$?%V%m%C%/$OBP>]$K$G$-$^$;$s!%$?$@$7!$%V%m%C%/$re(B block
e$B0z?t!Je(B&be$B!K$Ge(B
e$B<u$1$k$3$H$,=PMh$k$N$G!$$=$l$r;H$*$&$H$$$&J}?K$@$C$?$H;W$$$^$9!%e(B
e$B!!$3$N%k!<%k$O!$7k6I$[$+$N%V%m%C%/$HF1$8$J$N$G!$$o$+$j$d$9$$$H8@$($ke(B
e$B$+$H;W$$$^$9!%$D$^$j!$0J2<$N$h$&$JNc$G$O!$e(Bsetup
e$B$KEO$7$?%V%m%C%/$,8Fe(B
e$B$P$l$^$9$,!$$3$l$O;zLL>e!$B>$N%V%m%C%/$He(B
lambdae$B!$e(Bdefine_method e$BEy$Ge(B
e$BF1$85sF0$G$9!%e(B
class C
end
def setup
$l = lambda{|&b|
p b
yield #=> block in main
}
C.module_eval{
define_method(:dm){|&b|
p b
yield #=> block in main
}
}
end
setup{
puts “block in main”
}
$l.call{}
C.new.dm{}
e$B!!e(Bdefine_method e$B$rFCJL07$$$9$k$N$J$i!$:G=i$+$ie(B define_method
e$B$r0U<1e(B
e$B$7$?:n$j$K$7$J$$$HB.EYE*$KFq$7$$$+$J!$$H;W$$$^$9!%B.EY$r5$$K$7$J$$$Ne(B
e$B$J$i!$$b$7$+$7$?$i$=$s$J$KFq$7$/$J$$$+$b$7$l$^$;$s!%e(B
e$B$?$7$+!$$3$N$"$?$j$O5nG/!$L5M}$G$9!$4*J[$7$F2<$5$$!$e(B
e$B$H8@$C$F$$$?$h$&$J5$$,$9$k!%e(B
|e$B!!$3$N>l9g!$$I$A$i$be(B false e$B$K$J$k$Y$-$J$h$&$J5$$,$7$^$9!%e(B
e$BBh0l$NA*Br;h$Oe(Bdefine_methode$B$GDj5A$5$l$?%a%=%C%I$+$i$be(Byielde$B$Ge(B
e$B$-$F$[$7$$$s$G$9$,!"$J$s$i$+$N;v>p$G$=$l$,2DG=$G$J$$$J$i$P!"e(B
e$B$=$N>l9g$ON>J}e(Bfalsee$B$G$bNI$$$H;W$$$^$9!#e(B
e$B!!>e5-$NM}M3$GG<F@$7$F$b$i$($k$N$J$ie(B false
e$B$K$"$o$;$k$h$&$K$7$^$9!%e(B
e$B$=$&$G$J$/!$$d$O$je(B define_method
e$B$OFCJL07$$$7$m!$$H$$$&$3$H$@$C$?e(B
e$B$i!$$b$&>/$79M$($5$;$F2<$5$$!%e(B