[#11952] NORETURN — "Nobuyoshi.Nakada" <nobu.nakada@...>

なかだです。

24 messages 2001/01/10
[#11956] Re: NORETURN — WATANABE Hirofumi <eban@...> 2001/01/10

わたなべです.

[#11957] Re: NORETURN — matz@... (Yukihiro Matsumoto) 2001/01/10

まつもと ゆきひろです

[#11958] Re: NORETURN — WATANABE Hirofumi <eban@...> 2001/01/10

わたなべです.

[#11959] CVS branches (Re: Re: NORETURN) — matz@... (Yukihiro Matsumoto) 2001/01/10

[#12087] string#index, gsub, []= のバグ? — Beyond <beyond@...>

18 messages 2001/01/27
[#12091] Re: string#index, gsub, []= のバグ? — matz@... (Yukihiro Matsumoto) 2001/01/27

まつもと ゆきひろです

[ruby-dev:12059] Re: break from proc-closure (Re: [ruby-list:27277])

From: matz@... (Yukihiro Matsumoto)
Date: 2001-01-22 03:20:18 UTC
List: ruby-dev #12059
まつもと ゆきひろです

In message "[ruby-dev:12054] break from proc-closure (Re: [ruby-list:27277])"
    on 01/01/22, Masatoshi SEKI <m_seki@mva.biglobe.ne.jp> writes:

|Procでのbreak, retryについてです。
|
|ブロック付きメソッドのブロック側の 
|  * break は、ブロック付きメソッドの終了
|  * retry は、ブロック付きメソッドをやり直し
|  * next は、ブロックの終了
|  * redo は、ブロックのやり直し
|を示しています。
|
|dRubyでは Proc を呼んだ結果から評価した値とbreak/retryがあったことを
|取り出してブロック付きメソッドをプロセス間で再現しています。

なるほど、状況が分かってきました。

ただ、breakはブロック付きメソッドの終了を意味しますので、
proc.callは「Proc.newで固定されたブロックの呼び出しを行う」
と見なせるので、breakはproc.callを例外なしに終了させるもので
はないかと思います。

あとはどのような逃げ道を用意するかですね。

要するにあるprocがある時に、そのprocがbreakで終了したかどう
か判定する方法があれば良いんですよね。違う?

|proc.call のときは例外が発生しないけど、each(&proc) のときは
|例外が発生します。
|
|これは意図した挙動でしょうか? 

ゆうべの修正ではどちらも例外を発生しなくなりました(チェック
インしてません)。でも、これはどうもまずそうなのでさらに修正
する予定です。問題はどのように変更するかですが、まだ、確定し
てません。
                                まつもと ゆきひろ /:|)

In This Thread