Swift for-in 循环
- Swift for-in 循环基础:在 Swift 中,
for-in
循环用于遍历序列(如数组、范围、字符串等),通过循环变量val
在每次迭代中访问序列的每个元素。 - 带 where 子句的 for 循环:
for-in
循环可以结合where
子句来实现过滤,只有当where
子句的条件为true
时,循环内的代码才会执行。 - 使用范围和 Stride 函数的 for 循环:
for-in
循环可以遍历数字范围(如1...3
),使用stride(from:to:by:)
函数可以实现每次迭代按固定值增加的循环。
在计算机编程中,循环被用来重复执行一段代码。
例如,如果我们想要展示一条消息 100 次,那么我们可以使用循环。这只是一个简单的例子;使用循环,你可以实现更多功能。
Swift 中有 3 种类型的循环:
Swift for-in 循环
在 Swift 中,for-in
循环被用于多次运行一段代码。它用于遍历任何序列,如数组、范围、字符串等。
for-in
循环的语法是:
for val in sequence{
// 语句
}
这里,val
在每次迭代中访问 sequence
的每个项目。循环一直持续到我们到达 sequence
的最后一个项目。
for-in 循环的流程图
示例:遍历数组
// 访问数组中的元素
let languages = ["Swift", "Java", "Go", "JavaScript"]
for language in languages {
print(language)
}
输出
Swift
Java
Go
JavaScript
在上述示例中,我们创建了一个名为 languages
的数组。
最初,language
被设置为数组的第一个元素,即 Swift
,所以循环内的打印语句被执行。
language
被更新为数组的下一个元素,打印语句再次被执行。这样,循环一直运行到访问数组的最后一个元素为止。
带 where 子句的 for 循环
在 Swift 中,我们也可以在 for-in
循环中添加 where
子句。它用于在循环中实现过滤。也就是说,如果 where
子句中的条件返回 true
,则执行循环。
// 从数组中移除 Java
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
循环来遍历范围。例如,
// 从 i = 1 迭代到 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
在上述示例中,循环遍历从 1 到 10 的范围,间隔为 2。但是,10 不包括在序列中。
这里,i
的值设置为 1
,并在每次迭代时以 2 的间隔更新。