From: Nobuyoshi Nakada Date: 2007-08-13T12:13:57+09:00 Subject: [ruby-dev:31395] Re: retryの使い方 なかだです。 At Mon, 13 Aug 2007 04:19:34 +0900, eklerni wrote in [ruby-dev:31390]: > 元の例は > > (yield->後処理->yield->後処理->...)->何らかの処理->後処理 > というフローを後処理のコードを一箇所にまとめる条件で行いたいのですが、 > (()は任意のループ) こんなので。 while true begin unless yield a() break end ensure b() end end until begin unless yield a() true end ensure b() end end あるいは、[ruby-dev:31306]の最初の例では例外のときには後処理は実 行されませんが、それでいいなら必要なのはlispでいうprog1なのでは。 def foo until ((a(); true) unless yield).tap {b()} end end -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦