Swift Continue 语句:跳出循环中的“不必要步骤”
在编写循环代码时,我们常常会遇到这样的场景:遍历一组数据,但某些条件下的数据我们并不需要处理。如果强行继续执行后续逻辑,不仅浪费性能,还可能引入错误。这时,Swift 提供了一种非常优雅的解决方案——continue 语句。它就像一个“跳过按钮”,让你在循环中主动跳过当前这次迭代,直接进入下一次循环。
想象一下你在超市收银台排队,前面有个人买了 100 个苹果,但你只买了一瓶水。收银员帮你结账时,你完全没必要等那个人买完所有苹果才轮到你。continue 就像是你对收银员说:“我这边已经准备好了,你先处理我吧。” 它让程序在合适的时候“跳过”无用的处理,提升效率。
什么是 Swift Continue 语句?
continue 是 Swift 中用于控制循环流程的关键字,它只能出现在 for、while 或 repeat-while 循环内部。当程序执行到 continue 时,当前循环体中剩余的代码将被跳过,直接进入下一次循环的判断阶段。
简单来说,continue 的作用是:“我这轮不干了,下一轮再说。”
语法结构
for item in collection {
// 检查条件
if someCondition {
continue // 跳过本轮剩余代码,进入下一轮
}
// 只有不满足 continue 条件时,才会执行到这里
print("处理 \(item)")
}
这个结构非常直观:一旦遇到 continue,程序就不再执行该轮循环中后续的代码,直接回到循环开头,判断是否继续。
常见使用场景:过滤无效数据
在实际开发中,最常见的用途就是跳过无效或不需要处理的数据。比如你有一个用户列表,但只想处理年龄大于 18 岁的用户。
let users = [
(name: "Alice", age: 25),
(name: "Bob", age: 16),
(name: "Charlie", age: 30),
(name: "Diana", age: 17),
(name: "Eve", age: 22)
]
for user in users {
// 如果年龄小于 18,跳过处理
if user.age < 18 {
continue // 不处理未成年人,直接进入下一轮
}
// 只有年龄 >= 18 的用户才会执行到这里
print("欢迎 \(user.name),您已成年,可进行注册。")
}
输出结果:
欢迎 Alice,您已成年,可进行注册。
欢迎 Charlie,您已成年,可进行注册。
欢迎 Eve,您已成年,可进行注册。
可以看到,Bob 和 Diana 被成功跳过了。continue 让我们避免了嵌套 if 的复杂结构,代码更清晰、更易读。
对比:不用 continue 的写法
如果不使用 continue,代码会变成这样:
for user in users {
if user.age >= 18 {
print("欢迎 \(user.name),您已成年,可进行注册。")
}
// 多余的 else 分支,逻辑更复杂
}
虽然结果一样,但逻辑上不如 continue 明确——你必须在 if 中写“要做”的逻辑,而不是“要跳过”的逻辑。而 continue 正好反向表达,更符合人类思维习惯。
结合条件判断:处理特定情况
除了过滤无效数据,continue 还常用于处理“特殊但不需要执行后续操作”的情况。
比如你正在遍历一个日志数组,只想处理包含“ERROR”的日志,但不希望处理“INFO”类日志。
let logs = [
"INFO: 用户登录成功",
"ERROR: 数据库连接失败",
"INFO: 页面加载完成",
"WARNING: 缓存过期",
"ERROR: 认证令牌失效"
]
for log in logs {
// 如果是 INFO 日志,跳过处理
if log.hasPrefix("INFO") {
continue
}
// 只有非 INFO 日志才会到这里
print("⚠️ 发现重要日志:\(log)")
}
输出:
⚠️ 发现重要日志:ERROR: 数据库连接失败
⚠️ 发现重要日志:WARNING: 缓存过期
⚠️ 发现重要日志:ERROR: 认证令牌失效
这个例子说明:continue 不仅能过滤“坏数据”,也能跳过“非目标数据”,让主逻辑更专注。
在 while 循环中的应用
continue 不仅适用于 for 循环,也适用于 while 和 repeat-while 循环。
var count = 0
while count < 10 {
count += 1
// 如果是偶数,跳过处理
if count % 2 == 0 {
continue
}
// 只有奇数才会执行到这里
print("当前奇数:\(count)")
}
输出:
当前奇数:1
当前奇数:3
当前奇数:5
当前奇数:7
当前奇数:9
这里我们用 continue 跳过了所有偶数的处理,只保留奇数的输出。这种写法比用 if count % 2 != 0 嵌套更简洁。
注意事项:continue 不能跳出循环本身
continue 只能跳过当前循环体,不会退出整个循环。它不会终止 for 或 while 循环,只是跳过本轮。
for i in 1...5 {
if i == 3 {
continue
}
print(i) // i 为 3 时不会执行
}
输出:
1
2
4
5
可以看到,continue 并没有让循环提前结束,而是继续执行下一轮。
高级技巧:嵌套循环中的 continue
在嵌套循环中使用 continue 时,它只会跳过当前所在的循环层,不会影响外层循环。
let numbers = [1, 2, 3, 4, 5]
let letters = ["A", "B", "C"]
for num in numbers {
for letter in letters {
// 如果数字是 2,跳过所有字母的组合
if num == 2 {
continue // 只跳过当前内层循环的本轮
}
print("\(num)\(letter)")
}
}
输出:
1A
1B
1C
3A
3B
3C
4A
4B
4C
5A
5B
5C
注意:num == 2 时,内层循环的 A, B, C 都被跳过,但外层循环继续执行 num = 3。这说明 continue 的作用范围是当前循环层。
重要提醒:避免过度使用 continue
虽然 continue 很方便,但过度使用会让代码逻辑变复杂。建议:
- 仅在条件明确、逻辑清晰时使用
- 避免在同一个循环中多次使用
continue - 优先考虑使用
if条件判断来简化逻辑
总结:Swift Continue 语句的核心价值
Swift Continue 语句 是一个轻量但强大的控制流工具。它让开发者能够优雅地跳过不需要执行的循环体,使代码更简洁、可读性更强。
通过实际案例我们可以看到:
- 它能有效过滤无效数据
- 提升程序性能,避免不必要的计算
- 在嵌套循环中精准控制执行流程
- 与
break形成互补:break是“退出循环”,continue是“跳过本轮”
在日常开发中,合理使用 continue,能让你的循环代码更像“自然语言”而非“机器指令”。它不是必须的语法糖,而是让代码更“像人写的”关键一环。
记住:写代码不只是让机器运行,更是让后来阅读你代码的人能轻松理解。continue 正是这种“表达意图”的最佳实践之一。