Swift Continue 语句(保姆级教程)

Swift Continue 语句:跳出循环中的“不必要步骤”

在编写循环代码时,我们常常会遇到这样的场景:遍历一组数据,但某些条件下的数据我们并不需要处理。如果强行继续执行后续逻辑,不仅浪费性能,还可能引入错误。这时,Swift 提供了一种非常优雅的解决方案——continue 语句。它就像一个“跳过按钮”,让你在循环中主动跳过当前这次迭代,直接进入下一次循环。

想象一下你在超市收银台排队,前面有个人买了 100 个苹果,但你只买了一瓶水。收银员帮你结账时,你完全没必要等那个人买完所有苹果才轮到你。continue 就像是你对收银员说:“我这边已经准备好了,你先处理我吧。” 它让程序在合适的时候“跳过”无用的处理,提升效率。

什么是 Swift Continue 语句?

continue 是 Swift 中用于控制循环流程的关键字,它只能出现在 forwhilerepeat-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 循环,也适用于 whilerepeat-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 只能跳过当前循环体,不会退出整个循环。它不会终止 forwhile 循环,只是跳过本轮。

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 正是这种“表达意图”的最佳实践之一。