From: matz@... (Yukihiro Matsumoto) Date: 1998-10-09T10:38:22+09:00 Subject: [ruby-list:9904] Re: Why cannot use 'return' in Proc? まつもと ゆきひろです In message "[ruby-list:9890] Why cannot use 'return' in Proc?" on 98/10/08, Tomoyuki Kosimizu writes: |こんにちは、越水です。 | |毎度タコな質問で恐縮なのですけど、Procの中では、 |なぜreturnを使うことができないのでしょうか? できないわけではないと思うのですが,Smalltalkのように任意の 場所から return ってわけにはいかなくてある程度制限があります. たとえば def foo(a) proc{|n| return n}.call(a) end foo(15) # => 15 はちゃんと動作します.ところが def foo(a) proc{|n| return n} end foo(15).call(10) はエラーになります.これはreturnするべきメソッドfooが終って しまったので,returnしようがないからです. callした地点,つまり評価を実行した場所からreturnしたい場合に は元のコンテキストを引きずっているprocではなく,文字列をeval するべきでしょう. まつもと ゆきひろ /:|)