[#380] bug report#3 and request#5 — keiju@... (Keiju ISHITSUKA)
けいじゅ@SHLジャパンです.
1 message
1996/08/06
[ruby-list:416] Re: reexecute from rescue [ Re: about exception ]
From:
Date:
1996-08-14 08:06:50 UTC
List:
ruby-list #416
けいじゅ@SHLジャパンです. In [ruby-list :00412 ] the message: "[ruby-list:412] Re: reexecute from rescue [ Re: about exception ] ", on Aug/13 19:12(JST) matz@caelum.co.jp (Yukihiro Matsumoto) writes: >そうでしょうね.今までのところあまりこういう使い方が必要なこ >とはありませんでした.私は無い時には「無いよ」といわれる方が >好きです. あのう. array#delete(elm) は, 無いよともいってくれませんが... 普通は, 本当に消したかどうかは分からなくてもいいのかも知れませんが, 知 りたい時もあるのでは... こういう時, デフォルトでは何もしないような例外があると便利ですね. つまり, a.delete(elm) で, elmがない時は例外を発行するが, キャッチしない限りそのまま通り過ぎ る. で, begin a.delete(elm) rescue ... end と明示的に書くと例外が捕捉できる. こういう例外があると, while gets ... の問題も解決しそう. この種の例外は, 結局 resume の機能が必要になるような気がするので, 今の ままでは実現は不可能ですかね? >できません.rescue節はif文のelse節と同じで特別に脱出できる構 >文ではないのです. なるほど. >|trap(closureも含めて)中で, breakは意味が分かりましたが, nextはどういう >|動作を行なうのでしょうか? >そのclosureの最初から実行をやり直します. これに関して, いっぱいメイルが来ていましたね(^^;; In [ruby-list :00415 ] the message: "[ruby-list:415] local exits ", on Aug/14 11:32(JST) matz@caelum.co.jp (Yukihiro Matsumoto) writes: > break > next > redo > > そのループを頭から再実行する. イテレータブロックの場合は, retry と同じ動作を行なうわけですね. > return > > 現在の関数の実行を終了する.トップレベルからはreturn出来 > ない(コンパイルエラーになる).lambdaの中からはreturnでき > ない(実行時エラーになる). lambda の中からのreturnは, 状況によっては良いと思うのですが, 安全のた めにできないようになっているのですか? > retry > rescueで使われた時 > イテレータの中で使われた時 > イテレータブロックで使われた時 > > イテレータの実行を(イテレータの引数の評価から)やり直す これってどういう意味ですか? >違和感があった原因はやはり繰り返さないイテレータの存在でしょ >うね.うーむ名前を変えないといけないかなあ.しかし,以前のま >ま continue だったらもっと違和感があったなあ. 名前は難しい問題ですね. __ ..........................................石塚 圭樹@SHLジャパン(株)... ------------->アドレス変わりました!! e-mail: keiju@shljapan.co.jp <----