跳到主要内容

Swift for-in 循环

提示
  1. Swift for-in 循环基础:在 Swift 中,for-in 循环用于遍历序列(如数组、范围、字符串等),通过循环变量 val 在每次迭代中访问序列的每个元素。
  2. 带 where 子句的 for 循环for-in 循环可以结合 where 子句来实现过滤,只有当 where 子句的条件为 true 时,循环内的代码才会执行。
  3. 使用范围和 Stride 函数的 for 循环for-in 循环可以遍历数字范围(如 1...3),使用 stride(from:to:by:) 函数可以实现每次迭代按固定值增加的循环。

在计算机编程中,循环被用来重复执行一段代码。

例如,如果我们想要展示一条消息 100 次,那么我们可以使用循环。这只是一个简单的例子;使用循环,你可以实现更多功能。

Swift 中有 3 种类型的循环:

  1. for-in 循环
  2. while 循环
  3. repeat...while 循环

Swift for-in 循环

在 Swift 中,for-in 循环被用于多次运行一段代码。它用于遍历任何序列,如数组、范围、字符串等。

for-in 循环的语法是:

for val in sequence{
// 语句
}

这里,val 在每次迭代中访问 sequence 的每个项目。循环一直持续到我们到达 sequence 的最后一个项目。

for-in 循环的流程图

Swift 中 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次Swifttrue打印 Swift
第2次JavafalseJava 不被打印。
第3次Gotrue打印 Go
第4次JavaScripttrue打印 JavaScript

带有范围的 for 循环

范围是两个数字间隔之间的一系列值。例如,

var values = 1...3

这里,1...3 定义了一个包含值 123 的范围。

在 Swift 中,我们可以使用 for 循环来遍历范围。例如,

// 从 i = 1 迭代到 i = 3
for i in 1...3 {
print(i)
}

输出

1
2
3

在上述示例中,我们使用 for-in 循环遍历了从 13 的范围。

i 的值设置为 1,并在每次迭代时更新为范围的下一个数字。这个过程一直持续到达到 3

迭代次数条件操作
第1次true打印 1i 增加到 2
第2次true打印 2i 增加到 3
第3次true打印 3i 增加到 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

在上述示例中,循环遍历从 110 的范围,间隔为 2。但是,10 不包括在序列中。

这里,i 的值设置为 1,并在每次迭代时以 2 的间隔更新。