まつもと ゆきひろです.
In message "[ruby-list:414] Re: reexecute from rescue [ Re: about exception ]"
on 96/08/13, Yukihiro Matsumoto <matz / caelum.co.jp> writes:
|最初からやり直すのはredoです.nextだとそのclosureの実行を終
|了します.lambdaの場合はbreakと同じ動作です.
|# なんとなく違和感があるのでちょっと整理します.
整理してみました.
local exits
break
そのループの実行を中断する.イテレータの場合はイテレータ
の実行を中断する.
next
そのループの次の実行にジャンプする.一度しか実行しないタ
イプのイテレータ(なんか名前が自己矛盾しているような…)で
は実行を終了することになる.イテレータの場合はyieldの実
行が終了する.
redo
そのループを頭から再実行する.
return
現在の関数の実行を終了する.トップレベルからはreturn出来
ない(コンパイルエラーになる).lambdaの中からはreturnでき
ない(実行時エラーになる).
retry
rescueで使われた時
beginから実行を繰り返す.
イテレータの中で使われた時
イテレータの実行を(イテレータの引数の評価から)やり直す
イテレータブロックで使われた時
イテレータの実行を(イテレータの引数の評価から)やり直す
違和感があった原因はやはり繰り返さないイテレータの存在でしょ
うね.うーむ名前を変えないといけないかなあ.しかし,以前のま
ま continue だったらもっと違和感があったなあ.
まつもと ゆきひろ /:|)