Swift 循环入门:从零开始掌握编程中的“重复艺术”
在编程世界里,重复是常态。无论是处理数据、遍历列表,还是执行某个任务多次,我们都需要一种机制来“重复做某件事”。Swift 提供了强大而优雅的循环结构,让你能轻松应对这类需求。今天,我们就来深入聊聊 Swift 循环,从基础语法到实际应用,一步步带你掌握这项核心技能。
Swift 循环不仅仅是写代码的工具,更像是你编程思维的“节奏控制器”。想象一下,你正在做一件重复性工作,比如整理文件夹里的 100 个文档。如果你手动一个一个打开、重命名、移动,效率极低。但如果你能设定一个“自动整理规则”,让电脑帮你完成,那效率就完全不同了。Swift 循环就是这个“自动规则”的实现方式。
for 循环:最常用的循环方式
for 循环是 Swift 中最常用、最灵活的循环结构之一。它通常用于已知循环次数的场景,比如遍历数组、执行固定次数的任务。
// 示例:打印 1 到 10 的数字
for i in 1...10 {
print("当前数字是:\(i)")
}
中文注释说明:
for i in 1...10表示从 1 开始,到 10 结束,包含 10 的闭区间。i是循环变量,每次迭代会自动递增 1。...是闭区间操作符,表示包含两端值;若使用..<则为左闭右开区间,不包含最后一个值。
你也可以用 for 循环来遍历集合类型,比如数组:
let fruits = ["苹果", "香蕉", "橙子", "葡萄"]
for fruit in fruits {
print("今天吃的是:\(fruit)")
}
中文注释说明:
fruits是一个字符串数组,包含四种水果。for fruit in fruits表示依次将数组中的每个元素赋值给变量fruit。- 无需手动管理索引,Swift 会自动处理遍历逻辑,非常安全且简洁。
这种写法不仅代码更短,还避免了索引越界错误,是 Swift 强调安全性的体现。
for-in 循环与区间操作符的灵活组合
Swift 的区间操作符让 for 循环更具表达力。除了 ...(闭区间),还有 ..<(左闭右开),以及 ... 与 stride 的结合使用。
// 使用 stride 函数,跳过某些值
for i in stride(from: 0, to: 10, by: 2) {
print("偶数:\(i)")
}
中文注释说明:
stride(from: 0, to: 10, by: 2)从 0 开始,每次加 2,直到小于 10 为止。- 结果输出:0, 2, 4, 6, 8。
- 适合用于需要“步长”控制的场景,比如每隔 5 秒执行一次任务。
再比如,倒序遍历:
for i in stride(from: 10, through: 1, by: -1) {
print("倒计时:\(i)")
}
中文注释说明:
through表示包含终点值,即使步长为负。by: -1表示每次减 1,实现倒序。- 输出从 10 到 1 的递减序列。
这些技巧让你在处理复杂逻辑时,不再需要手动管理索引,让代码更清晰、更安全。
while 循环:条件驱动的重复执行
当你无法预知循环次数,但知道“只要条件满足就继续执行”时,while 循环就派上用场了。
var count = 0
while count < 5 {
print("第 \(count + 1) 次执行")
count += 1
}
中文注释说明:
while count < 5是判断条件,只有当 count 小于 5 时才进入循环体。count += 1每次循环后增加 1,防止无限循环。- 如果忘记更新变量,程序将陷入死循环,这是新手常犯的错误。
while 循环非常适合处理用户输入、游戏逻辑、数据读取等不确定循环次数的场景。
while vs repeat-while:你真的分得清吗?
Swift 还提供了 repeat-while 循环,它的特点是“先执行,后判断”。
var number = 10
repeat {
print("当前数字:\(number)")
number -= 1
} while number > 0
中文注释说明:
repeat块中的代码至少会执行一次,即使条件一开始就不成立。while number > 0是判断条件,只有在条件为真时才继续下一轮。- 这个结构特别适合“菜单选择”场景:用户必须至少选择一次,然后根据选择决定是否继续。
形象比喻:
while 像是“看门人”:先看门是否开着,如果开着才放你进去。
repeat-while 像是“自动门”:先让你进去,再看门是否该关。
循环中的控制语句:break 与 continue
在复杂逻辑中,我们有时需要提前退出循环,或跳过当前迭代。Swift 提供了 break 和 continue 语句来实现。
for i in 1...10 {
if i == 5 {
break // 当 i 等于 5 时,立即退出整个循环
}
print("数字:\(i)")
}
中文注释说明:
- 当 i 等于 5 时,
break会终止整个 for 循环。- 输出结果:1, 2, 3, 4。
- 适用于找到目标后无需继续搜索的场景,如在数组中查找某元素。
for i in 1...10 {
if i % 2 == 0 {
continue // 跳过偶数,只处理奇数
}
print("奇数:\(i)")
}
中文注释说明:
i % 2 == 0判断是否为偶数。continue表示跳过本次循环剩余代码,直接进入下一次迭代。- 输出结果:1, 3, 5, 7, 9。
- 适合过滤数据,只处理符合条件的项。
这两个语句是控制循环流程的关键,使用得当能大幅提升代码效率。
实际应用案例:处理学生成绩统计
我们来做一个完整的例子,展示 Swift 循环在真实场景中的应用。
let scores = [88, 92, 76, 95, 83, 79, 91, 87]
var total = 0
var highest = scores[0]
var count = 0
for score in scores {
total += score
if score > highest {
highest = score
}
if score < 80 {
continue // 低于 80 分的跳过,不计入优秀率
}
count += 1
}
let average = Double(total) / Double(scores.count)
let excellentRate = Double(count) / Double(scores.count) * 100
print("总分:\(total)")
print("平均分:\(String(format: "%.1f", average))")
print("最高分:\(highest)")
print("优秀率:\(String(format: "%.1f%%", excellentRate))")
中文注释说明:
scores是一组学生成绩。for score in scores遍历每个成绩。if score < 80使用continue忽略不及格项。count只统计 80 分及以上的人数。- 最终计算平均分和优秀率,输出结果。
这个例子展示了 Swift 循环在数据处理中的强大能力。它不仅简洁,还避免了手动索引的错误,是现代编程的最佳实践。
总结:掌握 Swift 循环,让代码更高效
通过本文的讲解,我们系统学习了 Swift 循环的四种主要形式:for、for-in、while 和 repeat-while,以及 break 和 continue 的控制机制。每种循环都有其适用场景,理解它们的差异,才能写出更清晰、更高效的代码。
Swift 循环不仅仅是语法,更是一种思维方式。它让你从“手动重复”转向“自动控制”,让程序具备智能执行的能力。无论你是初学者还是中级开发者,掌握好循环,都是迈向高级编程的重要一步。
在日常开发中,合理使用 Swift 循环,能显著提升代码可读性与维护性。希望你能将这些技巧应用到实际项目中,让每一次循环都成为你代码质量的加分项。