塩焼きブログ

塩焼きに関しての研究内容を公開しています

Rubyのループを制御するbreak, next, redo

ループの中で条件に一致する時、そのループを再度やり直したい場合はredoを使う。例では合計が6になった時、ループをやり直しているためloop 3が2回出力されている。

sum = 0
for i in 1..5
  puts "loop #{i} => #{sum += i}"
  if sum == 6
    redo
  end
end
# loop 1 => 1
# loop 2 => 3
# loop 3 => 6
# loop 3 => 9
# loop 4 => 13
# loop 5 => 18

ループで条件に一致する時、それ以降の処理をスキップしたい時nextを使う。例ではloop 3の計算は実行し、それ以降の結果出力をスキップしている。

sum = 0
for i in 1..5
  sum += i
  if sum == 6
    next
  end
  puts "loop #{i} => #{sum}"
end
# loop 1 => 1
# loop 2 => 3
# loop 4 => 10
# loop 5 => 15

ループで条件に一致する時ループを抜けたい時はbreakを使う。例では合計値が目的値以上になると終了しているため、loop 5は実行されていない。

sum = 0
for i in 1..5
  puts "loop #{i} => #{sum += i}"
  if sum > 6
    break
  end
end
# loop 1 => 1
# loop 2 => 3
# loop 3 => 6