Control Flow
Break And Continue
continue skips to the next loop iteration, while break exits the loop.
Skip or stop
break_continue.swift
Replay: real traced execution (multi-file project)
let skip = 3
let numbers = [1, 2, 3, 4, 5]
var total = 0
for number in numbers {
if number == skip {
continue
}
if number > 4 {
break
}
total = total + number
}
print("skip=\(skip)")
print("total=\(total)")
let skip = 2
let numbers = [1, 2, 3, 4, 5]
var total = 0
for number in numbers {
if number == skip {
continue
}
if number > 4 {
break
}
total = total + number
}
print("skip=\(skip)")
print("total=\(total)")
let skip = 4
let numbers = [1, 2, 3, 4, 5]
var total = 0
for number in numbers {
if number == skip {
continue
}
if number > 4 {
break
}
total = total + number
}
print("skip=\(skip)")
print("total=\(total)")
skip ← 3, numbers ← [1, 2, 3, 4, 5], total ← 0
1let skip→ 3 = 3 //@skip=2, 42let numbers→ [1, 2, 3, 4, 5] = [1, 2, 3, 4, 5]3var total→ 0 = 0total ← 1
pass 1 of 55for number1 in numbers[1, 2, 3, 4, 5] {6 if number == skip {7 continue8 }9 if number > 4 {10 break11 }12 total→ 1 = total + number113}All 5 passes — pass 1 is the card above pass numberskiptotal1 1 — 0 → 1 2 2 — 1 → 3 3 3 3 — 4 4 — 3 → 7 5 5 — — if number == skip
5for number in numbers {6 if number3 == skip3 {7 continue8 }if number > 4
8}9if number5 > 4 {10 break11}print("skip=\(skip)")
15print("skip=\(skip3)")16print("total=\(total7)")outputskip=3 total=7
skip ← 2, numbers ← [1, 2, 3, 4, 5], total ← 0
1let skip→ 2 = 22let numbers→ [1, 2, 3, 4, 5] = [1, 2, 3, 4, 5]3var total→ 0 = 0total ← 1
pass 1 of 55for number1 in numbers[1, 2, 3, 4, 5] {6 if number == skip {7 continue8 }9 if number > 4 {10 break11 }12 total→ 1 = total + number113}All 5 passes — pass 1 is the card above pass numberskiptotal1 1 — 0 → 1 2 2 2 — 3 3 — 1 → 4 4 4 — 4 → 8 5 5 — — if number == skip
5for number in numbers {6 if number2 == skip2 {7 continue8 }if number > 4
8}9if number5 > 4 {10 break11}print("skip=\(skip)")
15print("skip=\(skip2)")16print("total=\(total8)")outputskip=2 total=8
skip ← 4, numbers ← [1, 2, 3, 4, 5], total ← 0
1let skip→ 4 = 42let numbers→ [1, 2, 3, 4, 5] = [1, 2, 3, 4, 5]3var total→ 0 = 0total ← 1
pass 1 of 55for number1 in numbers[1, 2, 3, 4, 5] {6 if number == skip {7 continue8 }9 if number > 4 {10 break11 }12 total→ 1 = total + number113}All 5 passes — pass 1 is the card above pass numberskiptotal1 1 — 0 → 1 2 2 — 1 → 3 3 3 — 3 → 6 4 4 4 — 5 5 — — if number == skip
5for number in numbers {6 if number4 == skip4 {7 continue8 }if number > 4
8}9if number5 > 4 {10 break11}print("skip=\(skip)")
15print("skip=\(skip4)")16print("total=\(total6)")outputskip=4 total=6
Skip One, Stop After Four
skipstarts at3.- The loop visits
1,2,3,4, and5. - When the number is
3,continueskips the add. - When the number is
5,breakstops the loop. - The total is
1 + 2 + 4, which is7. | Number | Action | Running total | | --- | --- | --- | |1| add |1| |2| add |3| |3| continue |3| |4| add |7| |5| break |7|
loop control
Use `continue` for one skipped value and `break` when later work should not run. Both change which loop statements execute.
Exercise: break_continue.swift
Use continue to skip one number, break after four, and print the total