在计算机编程中,循环用于重复执行一段代码。
例如,如果我们想显示一条消息 100 次,那么我们可以使用循环。这只是一个简单的例子;使用循环,您可以实现更多功能。
Swift 中有 3 种类型的循环
Swift for-in 循环
在 Swift 中,for-in 循环用于运行一段代码固定次数。它用于迭代任何序列,例如数组、范围、字符串等。
for-in 循环的语法是
for val in sequence{
// statements
}
在这里,val 在每次迭代中访问 sequence 的每个项目。循环会一直持续到访问 sequence 中的最后一个项目。
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 语句。
language 被更新为数组的下一个元素,print 语句再次执行。这样,循环会一直运行,直到访问完数组的最后一个元素。
带 where 子句的 For 循环
在 Swift 中,我们也可以在 for-in 循环中添加 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 循环来访问 languages 的每个元素。请注意 for-in 循环中 where 子句的使用。
for language in languages where language != "Java"
在这里,如果 where 子句中的条件返回 true,则执行循环内的代码。否则,它不会被执行。
| 迭代 | language | 条件:!= "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 i = 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 函数的 For 循环
如果我们希望循环在每次迭代中按某个固定值递增,而不是使用范围,我们就必须使用 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 的间隔更新。