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 arraylet languages = ["Swift", "Java", "Go", "JavaScript"]for language in languages {print(language)}
结果如下:
SwiftJavaGoJavaScript
在上面的示例中,我们创建了一个名为 languages 的数组。
最初,language 的值被设置为数组的第一个元素,即 Swift,因此执行循环中的 print 语句。
使用数组的下一个元素更新语言,并再次执行 print 语句。这样,循环将一直运行,直到访问数组的最后一个元素。
带有 where 子句的 for 循环
在 Swift 中,我们还可以在循环中添加带有 for 的 where 子句。它用于在循环中实现过滤。也就是说,如果 where 子句中的条件返回 true,则执行循环。
// remove Java from an arraylet languages = ["Swift", "Java", "Go", "JavaScript"]for language in languages where language != "Java"{print(language)}
结果为:
SwiftGoJavaScript
在上面的实例中,我们使用了 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 = 3for i in 1...3 {print(i)}
结果为:
123
在上面的实例中,我们使用 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)}
结果为:
13579
在上面的实例中,循环以 2 的间隔在 1 到 10 的范围内迭代。但是,序列中不包括 10。
这里,i 的值被设置为 1,并且在每次迭代中以 2 的间隔更新。