📘for...in
Swift ⟩ flow control ⟩ loop ⟩ for...in
👉 replit
var a1 = [Int]()
var a2 = [Int]()
var a3 = [Int]()
var a4 = [Int]()
var a5 = [Int]()
/*
for-in loop
-----------
- ✅ continue: skip to next element
- ✅ break : break the loop completely
- ❌ return : invalid outside of a function
*/
// 'break' in for-in loop
for n in 1...10 {
if n > 3 { break } // ⭐ break for-loop completely
a1.append(n)
}
// ⭐ [1, 2, 3]
print(a1)
/*
.forEach()
-----------
- ⛔ continue: not allowed
- ⛔ break : not allowed
- ❗ return : return from closure only
*/
// early 'return' in forEach
(1...10).forEach { n in
if n > 2 { return } // ⭐ early return
a2.append(n) // ⭐ number NOT appended
}
// ⭐ [1, 2]
// late 'return' in forEach
(1...10).forEach { n in
a3.append(n) // ⭐ number appended
if n > 2 { return } // ⭐ late return from closure
}
// ⭐ [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
// ⛔ 'continue' in forEach not allowed
(1...10).forEach { n in
// ⛔ error: 'continue' is only allowed inside a loop
if n > 2 { continue }
a4.append(n)
}
// ⛔ 'break' in forEach not allowed
(1...10).forEach { n in
// ⛔ error:
// - unlabeled 'break' is only allowed inside a loop or switch
// - labeled 'break' is required to exit an `if` or `do`
if n > 2 { break }
a5.append(n)
}
// for ... in ... where ...
for article in articles where !article.isDraft { // ⭐️ where clause
results.append(article)
guard results.count < 5 else { break } // ⭐️ break for-loop entirely
}
Collections ⟩ Sequence ⟩ .forEach(_:)
Flow Control ⟩ for-in loop - iterate over a sequence (array, range, string, dictionary)
Last updated
Was this helpful?