e$B!!$5$5$@$G$9!%e(B
e$B!!e(Bproc{return} e$B$C$F!$$=$N%a%=%C%I$+$ie(B return
e$B$9$k!$$GNI$$$N$G$9$h$M!)e(B
$ …/build_1_8/ruby -ve ’
m()
’
ruby 1.8.7 (2008-06-18 patchlevel 5000) [i686-linux]
:ng
e$B!!e(B1.8.7 e$B$G$O!$e(Bproc e$B$+$ie(B return
e$B$7$F$$$k5$$,$7$^$9!%e(B
At Thu, 19 Jun 2008 09:37:03 +0900,
SASADA Koichi wrote:
 proc{return} ã£ã¦ï¼Œãã®ãƒ¡ã‚½ãƒƒãƒ‰ã‹ã‚‰ return ã™ã‚‹ï¼Œã§è‰¯ã„ã®ã§ã™ã‚ˆã?
(snip)
 1.8.7 ã§ã¯ï¼Œproc ã‹ã‚‰ return ã—ã¦ã„ã‚‹æ°—ãŒã—ã¾ã™ï¼Ž
1.9 ã§ã®å¤‰æ›´ç‚¹ã§ã™ã‚ˆã。1.8.6 -> 1.8.7 ã§å¤‰ã‚ã£ãŸã‚ã‘ã§ã¯ãªã„ã§ã™ã€‚
% ruby <<EOF
def m
open(’/etc/hosts’) { return }
p :not_reached
end
m
EOF
㯠1.8 以å‰ã§ã‚‚ m ã‹ã‚‰ return ã—ã¾ã™ãŒã€‚
1.9 ã§ã¯ break ã§å€¤ã‚’è¿”ã›ã‚‹ã‚ˆã†ã«ãªã£ãŸã—ã€ä¸€è²«æ€§ã‚’å–ã‚‹ã«è¿·ã„ãªã—ã¨ã€‚
e$B!!$5$5$@$G$9!%e(B
Akinori MUSHA wrote:
1.9 e$B$G$NJQ99E@$G$9$h$M!#e(B1.8.6 -> 1.8.7 e$B$GJQ$o$C$?$o$1$G$O$J$$$G$9!#e(B
e$B!!$$$(!$e(Bproce$B$,%M%9%H$7$F$$$k;~$K!$JQ$@$J!$$H$$$&OC$G$9!%e(B1.8
e$B0JA0$NLde(B
e$BBj$G$9!%e(B1.8 e$B$^$G$O!$e(Bproc
e$B$N07$$$OHyL/$J$N$G!$$"$^$j5$$K$7$J$$$G$b$$e(B
e$B$$$N$+$b$7$l$^$;$s!%e(B
e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B
In message “Re: [ruby-dev:35170] Re: return from proc”
on Thu, 19 Jun 2008 12:05:31 +0900, SASADA Koichi [email protected]
writes:
|Akinori MUSHA wrote:
|> 1.9 e$B$G$NJQ99E@$G$9$h$M!#e(B1.8.6 → 1.8.7 e$B$GJQ$o$C$?$o$1$G$O$J$$$G$9!#e(B
|
|e$B!!$$$(!$e(Bproce$B$,%M%9%H$7$F$$$k;~$K!$JQ$@$J!$$H$$$&OC$G$9!%e(B1.8 e$B0JA0$NLde(B
|e$BBj$G$9!%e(B1.8 e$B$^$G$O!$e(Bproc e$B$N07$$$OHyL/$J$N$G!$$"$^$j5$$K$7$J$$$G$b$$e(B
|e$B$$$N$+$b$7$l$^$;$s!%e(B
e$B$=$&$G$9!#e(B1.8e$B$N;~$O0O$s$G$$$k%a%=%C%I$+$iC&=P$9$k$O$:$G$9!#e(B
e$B$G!"0O$s$G$$$k%a%=%C%I$+$iH4$1$A$c$C$?;~$K$Oe(Blocal jump error
e$B$K$J$k$O$:!#e(B
e$B$C$F$3$H$O>e5-$NLdBj$Oe(B1.8e$B$N%P%0$G$9$M!#$"$H$GD>$7$^$9!#e(B
At Thu, 19 Jun 2008 12:12:50 +0900,
matz wrote:
ãã†ã§ã™ã€‚1.8ã®æ™‚ã¯å›²ã‚“ã§ã„るメソッドã‹ã‚‰è„±å‡ºã™ã‚‹ã¯ãšã§ã™ã€‚
ã§ã€å›²ã‚“ã§ã„るメソッドã‹ã‚‰æŠœã‘ã¡ã‚ƒã£ãŸæ™‚ã«ã¯local jump error
ã«ãªã‚‹ã¯ãšã€‚
ã£ã¦ã“ã¨ã¯ä¸Šè¨˜ã®å•é¡Œã¯1.8ã®ãƒã‚°ã§ã™ã。ã‚ã¨ã§ç›´ã—ã¾ã™ã€‚
互æ›æ€§ã®å•é¡ŒãŒã‚ã‚‹ã®ã§ã¡ã‚‡ã£ã¨æ…Žé‡ã«è€ƒãˆãŸã„ã§ã™ã€‚
ç›´ã—ã‚„ã™ã‘れ㰠1.8.8 ã‹ã‚‰å¤‰ãˆã‚‹ã®ã‚‚ã‚ã‚Šã§ã™ãŒã€ proc {} 内ã§
return ã—ã¦ã„ã‚‹ã¨ã“ã‚を検出ã™ã‚‹ã®ã¯ãƒ„ールã®åŠ©ã‘ãŒå¿…è¦ã§ã™ã‚ˆã。
(æ–‡å—列ã®evalã¯ã•ã¦ãŠã)
1.8ã§å‹•ãRipperãŒã‚ã‚Œã°ã„ã„ã‚“ã ã‚ã†ã‹ã€‚ã—ã‹ã—ã€1.9ã®ãƒ‘ーザã§ã¯
文法エラーã¨ã„ã†1.8用コードもå˜åœ¨ã™ã‚‹ã®ãŒã¡ã‚‡ã£ã¨ç—›ã„…。
ãã†ã„ãˆã°ã€1.8ã§ã‚‚ break ã¯å€¤ã‚’è¿”ã›ã¾ã—ãŸã€‚勘é•ã„。