自前で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はイテレータを再実行する前に、イテレータへの引数を再評価するため、こういう動作になるとのこと。