From: Yusuke ENDOH Date: 2007-08-13T11:16:28+09:00 Subject: [ruby-dev:31393] Re: retryの使い方 遠藤と申します。 > > (yield->後処理->yield->後処理->...)->何らかの処理->後処理 > > というフローを後処理のコードを一箇所にまとめる条件で行いたいのですが、 後処理は終了条件に影響しないものとして、以下はどうでしょう。 retry/ensure 脳でない私にはこっちの方がわかりやすいです。 def foo begin yield p "何らかの処理" unless term = (条件) ensure p "後処理" end while term end 便乗で、以前からの漠然とした疑問だったんですが、ブロック定義に rescue/ensure 節が指定できないのはなぜでしょう。 メソッドでできるんだからブロックでできてもいい気がします。 loop do : rescue : ensure : end # じゃあ while ... rescue ... end や if ... then ... rescue ... end も、 # って話になるかもしれませんが。 -- Yusuke ENDOH