# Return from proc

**URL:** <https://www.ruby-forum.com/t/return-from-proc/140839>\
**Category:** Development\
**Created:** [June 19, 2008, 2:38am UTC](https://www.ruby-forum.com/t/return-from-proc/140839 "2008-06-19T02:38:55Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![SASADA\_Koichi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/f1d935/32.png) [@SASADA\_Koichi](https://www.ruby-forum.com/u/SASADA_Koichi)\
**Post date:** [June 19, 2008, 2:38am UTC](https://www.ruby-forum.com/t/return-from-proc/140839/1 "2008-06-19T02:38:55Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![SASADA\_Koichi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/f1d935/32.png) [@SASADA\_Koichi](https://www.ruby-forum.com/u/SASADA_Koichi)\
**Post date:** [June 19, 2008, 4:58am UTC](https://www.ruby-forum.com/t/return-from-proc/140839/2 "2008-06-19T04:58:14Z")

</div>

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 ã§å€¤ã‚’è¿”ã›ã‚‹ã‚ˆã†ã«ãªã£ãŸã—ã€ä¸€è²«æ€§ã‚’å–ã‚‹ã«è¿·ã„ãªã—ã¨ã€‚

---

<div class="post-metadata">

**Author:** ![SASADA\_Koichi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/f1d935/32.png) [@SASADA\_Koichi](https://www.ruby-forum.com/u/SASADA_Koichi)\
**Post date:** [June 19, 2008, 5:07am UTC](https://www.ruby-forum.com/t/return-from-proc/140839/3 "2008-06-19T05:07:35Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![SASADA\_Koichi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/f1d935/32.png) [@SASADA\_Koichi](https://www.ruby-forum.com/u/SASADA_Koichi)\
**Post date:** [June 19, 2008, 5:14am UTC](https://www.ruby-forum.com/t/return-from-proc/140839/4 "2008-06-19T05:14:36Z")

</div>

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 [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
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

---

<div class="post-metadata">

**Author:** ![SASADA\_Koichi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/f1d935/32.png) [@SASADA\_Koichi](https://www.ruby-forum.com/u/SASADA_Koichi)\
**Post date:** [June 19, 2008, 5:53am UTC](https://www.ruby-forum.com/t/return-from-proc/140839/5 "2008-06-19T05:53:14Z")

</div>

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 ã¯å€¤ã‚’è¿”ã›ã¾ã—ãŸã€‚å‹˜é•ã„ã€‚
