Swift for 循环入门:从基础语法到实战应用
在 Swift 编程语言中,循环结构是处理重复任务的核心工具之一。其中,for 循环因其简洁性和强大功能,成为开发者日常编码中使用频率最高的控制流语句。无论是遍历数组、处理集合数据,还是执行固定次数的操作,Swift for 循环 都能以优雅的方式完成任务。
想象一下,你要给班级里的 30 位同学发成绩单。如果手动写 30 次 print("同学A:85分"),不仅费时,还容易出错。而使用 for 循环,只需几行代码,就能自动完成全部输出。这就是循环的意义——让机器替你重复劳动,而你专注于逻辑设计。
本文将带你从零开始掌握 Swift for 循环 的核心语法与实际用法,帮助初学者建立清晰认知,也帮助中级开发者深入理解其底层机制和高级用法。
for in 循环的基本语法与结构
for in 是 Swift 中最常用的 for 循环形式,用于遍历集合类型的数据,比如数组、字典、字符串等。它的基本语法结构如下:
for 变量 in 集合 {
// 循环体代码
}
这里的 变量 是每次迭代时从集合中取出的元素,而 集合 可以是任何遵循 Sequence 协议的类型。
示例:遍历数组
let scores = [85, 92, 78, 96, 88]
// 使用 for in 遍历数组中的每一个分数
for score in scores {
print("当前分数是:\(score)")
}
注释说明:
scores是一个整型数组,包含 5 个元素。for score in scores表示每次从scores中取出一个元素,赋值给变量score。print("当前分数是:\(score)")是循环体,会执行 5 次,每次打印当前分数。- 输出结果:
当前分数是:85 当前分数是:92 当前分数是:78 当前分数是:96 当前分数是:88
这个例子展示了 Swift for 循环 如何自动管理迭代过程,无需手动控制索引,大大降低了出错概率。
与索引结合的 for 循环:使用 indices
在某些场景下,你不仅需要访问元素本身,还需要知道它的位置(即索引)。这时可以使用 indices 属性,配合 for 循环获取索引值。
let fruits = ["苹果", "香蕉", "橙子", "葡萄"]
// 遍历索引,同时获取索引和对应元素
for index in fruits.indices {
print("第 \(index + 1) 个水果是:\(fruits[index])")
}
注释说明:
fruits.indices返回一个包含所有有效索引的集合(如0..<4)。index是当前的索引值(从 0 开始)。fruits[index]通过索引访问对应元素。index + 1是为了让输出更符合人类阅读习惯(第1个、第2个)。
输出结果:
第 1 个水果是:苹果
第 2 个水果是:香蕉
第 3 个水果是:橙子
第 4 个水果是:葡萄
这种写法特别适合需要对位置敏感的业务逻辑,比如表格行号、排序索引、数据校验等。
从 0 到 N 的计数循环:for 循环的区间用法
当你需要执行固定次数的操作时,可以使用区间(Range)配合 for 循环。Swift 提供了两种主要区间类型:
0..<n:左闭右开区间,包含 0 到 n-1。0...n:闭区间,包含 0 到 n。
示例:打印 1 到 10 的数字
// 使用左闭右开区间 1..<11,表示从 1 到 10
for i in 1..<11 {
print("当前数字是:\(i)")
}
注释说明:
1..<11表示从 1 开始,到 10 结束(不包括 11)。i是循环变量,每次递增 1。- 循环共执行 10 次,输出 1 到 10。
如果你希望包含 11,可以使用闭区间:
for i in 1...11 {
print("当前数字是:\(i)")
}
输出结果将从 1 到 11。
实际应用:生成乘法表
// 打印 9x9 乘法表
for i in 1...9 {
for j in 1...9 {
let product = i * j
print("\(i) × \(j) = \(product)", terminator: "\t") // 不换行,用制表符分隔
}
print() // 每行结束后换行
}
注释说明:
- 外层循环
i控制行数(1 到 9)。 - 内层循环
j控制每行的列数(1 到 9)。 terminator: "\t"避免每条输出自动换行,使输出更紧凑。print()单独调用用于换行,保证每行完整显示。
这种嵌套循环结构是 Swift for 循环 在实际项目中的典型用法。
遍历字典:for 循环与键值对处理
字典(Dictionary)是键值对集合,Swift for 循环 同样支持遍历字典。通过解构语法,可以同时获取键和值。
let studentGrades = [
"张三": 88,
"李四": 95,
"王五": 76,
"赵六": 92
]
// 遍历字典,同时获取 key 和 value
for (name, grade) in studentGrades {
print("学生 \(name) 的成绩是:\(grade) 分")
}
注释说明:
for (name, grade) in studentGrades使用了元组解构语法。name接收键(String 类型),grade接收值(Int 类型)。- 字典遍历顺序是不确定的(因为哈希结构),但每次运行结果一致。
输出示例(顺序可能不同):
学生 李四 的成绩是:95 分
学生 张三 的成绩是:88 分
学生 赵六 的成绩是:92 分
学生 王五 的成绩是:76 分
这个模式在处理配置文件、用户信息、统计报表等场景中极为常见。
高级技巧:跳过循环与提前退出
有时你可能需要在循环中根据条件跳过当前迭代,或提前终止整个循环。Swift 提供了 continue 和 break 语句来实现这些行为。
continue:跳过当前迭代
let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for num in numbers {
if num % 2 == 0 {
continue // 如果是偶数,跳过本次循环
}
print("奇数:\(num)")
}
注释说明:
if num % 2 == 0判断是否为偶数。continue使程序跳过当前循环体剩余代码,直接进入下一轮。- 输出结果:
奇数:1 奇数:3 奇数:5 奇数:7 奇数:9
break:提前退出循环
for i in 1...100 {
if i == 10 {
break // 当 i 等于 10 时,终止循环
}
print("当前数字:\(i)")
}
注释说明:
- 循环在
i == 10时被break中断。 - 只会输出 1 到 9,不会执行 10 及之后的代码。
这两个控制语句配合 Swift for 循环,可以实现复杂的流程控制逻辑,提高代码效率。
总结:掌握 Swift for 循环的关键点
Swift for 循环 不仅语法简洁,而且功能强大,适用于各种数据遍历场景。通过本文的学习,你应该已经掌握了以下核心能力:
- 使用
for in遍历数组、字典、字符串等集合。 - 结合
indices获取元素索引,实现位置敏感操作。 - 使用区间(
..<和...)实现计数循环。 - 在嵌套循环中构建复杂逻辑,如乘法表。
- 利用
continue和break灵活控制循环流程。
记住,良好的循环设计能让你的代码更清晰、更高效。不要一看到重复就写重复代码,而是思考是否可以用 Swift for 循环 来优化。
最后,无论是初学者还是有经验的开发者,持续练习和实际项目应用,才是掌握 Swift for 循环 的唯一路径。从今天开始,尝试在你的下一个项目中,用 for 循环替换掉重复的 if-else 或冗余代码吧!