Swift for-in 循环
在本章节中,我们将通过示例学习如何在 Swift 中使用 for-in 循环。
在计算机编程中,循环用于重复执行代码块。
例如,如果我们想显示一条消息 100 次,那么我们可以使用循环。这只是一个简单的例子;使用循环可以实现更多。
Swift 中有 3 种类型的循环:
- for in 循环
- while 循环
- repeat…while 循环
Swift for-in 循环
在 Swift 中,for-in
循环用于将代码块运行一定次数。它用于迭代任何序列,如数组、范围、字符串等。
for-in
循环的语法为:
for val in sequence{
// statements
}
这里,val
在每次迭代中访问序列的每个项。循环继续,直到我们到达序列中的最后一项。
for-in 循环流程图
循环数组实例
// access items of an array
let languages = ["Swift", "Java", "Go", "JavaScript"]
for language in languages {
print(language)
}
结果如下:
Swift
Java
Go
JavaScript
在上面的示例中,我们创建了一个名为 languages
的数组。
最初,language
的值被设置为数组的第一个元素,即 Swift,因此执行循环中的 print
语句。
使用数组的下一个元素更新语言,并再次执行 print
语句。这样,循环将一直运行,直到访问数组的最后一个元素。
带有 where 子句的 for 循环
在 Swift 中,我们还可以在循环中添加带有 for
的 where
子句。它用于在循环中实现过滤。也就是说,如果 where
子句中的条件返回 true,则执行循环。
// remove Java from an array
let languages = ["Swift", "Java", "Go", "JavaScript"]
for language in languages where language != "Java"{
print(language)
}
结果为:
Swift
Go
JavaScript
在上面的实例中,我们使用了 for-in
循环来访问语言的每个元素。注意在 for-in
循环中使用 where
子句。
for language in languages where language != "Java"
这里,如果 where
子句中的条件返回 true,则执行循环中的代码。否则,不执行。
迭代 | 语言 | 条件: != "Java" | 结果 |
---|---|---|---|
第 1 次 | Swift | true | Swift 被打印 |
第 2 次 | Java | false | Java 没有被打印 |
第 3 次 | Go | true | Go 被打印 |
第 4 次 | JavaScript | true | JavaScript 被打印 |
带范围的 for 循环
范围是两个数值间隔之间的一系列值。例如:
var values = 1...3
这里,1…3 义了包含值 1、2、3 的范围。
在 Swift 中,我们可以使用 for
循环在一个范围内迭代。例如:
// iterate from i = 1 to 1 = 3
for i in 1...3 {
print(i)
}
结果为:
1
2
3
在上面的实例中,我们使用 for-in
循环在 1 到 3 的范围内迭代。
i
的值设置为 1,并在每次迭代时更新为范围的下一个数字。该过程继续直到达到 3
。
迭代 | 条件 | 行为 |
---|---|---|
第 1 次 | true | 1 被打印。i 增长为 2 |
第 2 次 | true | 2 被打印。i 增长为 3 |
第 3 次 | true | 3 被打印。i 增长为 4 |
第 4 次 | false | 循环结束 |
用于具有跨幅度(Stride)功能的循环
如果我们希望循环在每次迭代中增加某个固定值,而不是范围,我们必须使用幅度(Stride)(from:to:by
)函数。例如:
for i in stride(from: 1, to: 10, by: 2) {
print(i)
}
结果为:
1
3
5
7
9
在上面的实例中,循环以 2
的间隔在 1 到 10 的范围内迭代。但是,序列中不包括 10。
这里,i
的值被设置为 1,并且在每次迭代中以 2 的间隔更新。