引言
Swift 作为苹果公司推出的强大编程语言,以其简洁、安全和高性能的特点深受开发者喜爱。在 Swift 中,
for
循环是一种非常常用的控制流结构,用于重复执行一段代码。本文将深入探讨 Swift 中
for
循环的进阶用法,并通过实际案例进行分析,帮助读者更好地理解和应用这一重要语法。
基础回顾:
for
循环的基本用法
在 Swift 中,
for
循环主要有两种形式:
for-in
循环和传统的
for
循环。
for-in
循环
for item in collection {
// 执行代码
}
这种循环适用于遍历数组、集合、范围等可迭代对象。
传统
for
循环
for var i = 0; i < 10; i++ {
// 执行代码
}
这种形式在 Swift 中较少使用,但在某些特定场景下仍然有用。
进阶用法:
for
循环的高级特性
1. 带条件的
for-in
循环
在遍历过程中,我们常常需要根据特定条件执行不同的操作。
let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for number in numbers where number % 2 == 0 {
print(number) // 输出偶数
}
2. 多重
for-in
循环
在处理多维数据时,嵌套的
for-in
循环非常有用。
let matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
for row in matrix {
for element in row {
print(element)
}
}
3. 使用
stride
进行步进循环
stride
函数可以生成一个序列,常用于创建等差数列。
for i in stride(from: 0, to: 10, by: 2) {
print(i) // 输出 0, 2, 4, 6, 8
}
实践案例分析
案例 1:计算斐波那契数列
斐波那契数列是一个经典的算法问题,我们可以使用
for
循环来实现。
func fibonacci(n: Int) -> Int {
guard n >= 0 else { return -1 }
if n == 0 || n == 1 {
return n
}
var a = 0
var b = 1
for _ in 2…n {
let temp = a + b
a = b
b = temp
}
return b
}
let fibNumber = fibonacci(n: 10)
print(fibNumber) // 输出 55
案例 2:矩阵转置
矩阵转置是线性代数中的基本操作,我们可以通过嵌套的
for
循环来实现。
func transpose(matrix: [[Int]]) -> [[Int]] {
guard !matrix.isEmpty else { return [[]] }
let rows = matrix.count
let cols = matrix[0].count
var transposed = Array(repeating: Array(repeating: 0, count: rows), count: cols)
for i in 0..
var triangle = [[Int]]()
for i in 0..