Use next to skip one iteration and break to stop a loop early.

loop control `next` jumps to the next loop iteration, while `break` exits the loop.

Break and Next

stop_at
break_next.rb
Replay: real traced execution (multi-file project)
stop_at = 5
accepted = []

(1..8).each do |number|
  next if number.even?
  break if number > stop_at

  accepted << number
end

puts "stop_at=#{stop_at}"
puts "accepted=#{accepted.join(",")}"
stop_at = 3
accepted = []

(1..8).each do |number|
  next if number.even?
  break if number > stop_at

  accepted << number
end

puts "stop_at=#{stop_at}"
puts "accepted=#{accepted.join(",")}"
stop_at = 7
accepted = []

(1..8).each do |number|
  next if number.even?
  break if number > stop_at

  accepted << number
end

puts "stop_at=#{stop_at}"
puts "accepted=#{accepted.join(",")}"
  1. stop_at ← 5, accepted ← []

    1stop_at→ 5 = 5  #@stop_at=3, 72accepted→ [] = []34(1..8).each do |number|5  next if number.even?6  break if number > stop_at78  accepted << number9end1011puts "stop_at=#{stop_at5}"12puts "accepted=#{accepted.join(",")1,3,5}"
    outputstop_at=5
    accepted=1,3,5
  1. stop_at ← 3, accepted ← []

    1stop_at→ 3 = 32accepted→ [] = []34(1..8).each do |number|5  next if number.even?6  break if number > stop_at78  accepted << number9end1011puts "stop_at=#{stop_at3}"12puts "accepted=#{accepted.join(",")1,3}"
    outputstop_at=3
    accepted=1,3
  1. stop_at ← 7, accepted ← []

    1stop_at→ 7 = 72accepted→ [] = []34(1..8).each do |number|5  next if number.even?6  break if number > stop_at78  accepted << number9end1011puts "stop_at=#{stop_at7}"12puts "accepted=#{accepted.join(",")1,3,5,7}"
    outputstop_at=7
    accepted=1,3,5,7

Keep Odd Values Until Stop

  1. stop_at starts at 5.
  2. Even numbers use next, so they are skipped.
  3. Odd numbers at or below 5 are accepted.
  4. The loop reaches 7 and uses break.
  5. The printed accepted list is 1,3,5. | Number | Action | Accepted | | --- | --- | --- | | 1 | add | 1 | | 2 | next | 1 | | 3 | add | 1,3 | | 4 | next | 1,3 | | 5 | add | 1,3,5 | | 6 | next | 1,3,5 | | 7 | break | 1,3,5 |

Exercise: break_next.rb

Use next to skip even numbers, break past a stop value, and print accepted odds