Control Flow
Break and Next
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
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(",")}"
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
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
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
stop_atstarts at5.- Even numbers use
next, so they are skipped. - Odd numbers at or below
5are accepted. - The loop reaches
7and usesbreak. - 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