自前でuntilのような処理。
昨日、居酒屋→カラオケ→カフェでアイス→ミスタードーナツでドーナツ2つ、なんていう糖尿病一直線コンボを炸裂させてしまったため、胃がダメージを受けてしまい家に引き籠もっていた。
体の調子が悪いと頭の調子も悪くなるのは当然で、あまり勉強進まなかった。「お前にとって今、一番大事なのは何だ?」と自分に問いかけちょっと反省。けど、実際にこんなことを他人から尋ねられたら「実家に預けてる猫」と答えるであろう。
そんな状況の中、自前でuntilみたいな処理がプログラミングRubyに載っていたので弄くった。
def do_until(cond) return if cond yield retry end i = 0 do_until(i > 10) do print i, ' ' i += 1 end
結果。
0 1 2 3 4 5 6 7 8 9 10
プログラミングRubyのp.88を写経。
retryはイテレータを再実行する前に、イテレータへの引数を再評価するため、こういう動作になるとのこと。