Ruby 1.8.7 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Kernelモジュール > loop

module function Kernel.#loop

loop { ... } -> object[permalink][rdoc]

(中断されない限り)永遠にブロックの評価を繰り返します。

与えられたブロック内で StopIterationKernel.#raise すると ループを終了して nil を返します。 ループを終了させる場合、通常は break を使用してください。

[RETURN]
break の引数など、ループ脱出時の値を返します。
def try int
  n = 0
  loop do
    n += 1
    break(n) if rand(n) > int
  end
end

puts "end on #{try(400)}" #=> end on ???