在计算机编程中,循环用于重复执行一段代码。
例如,如果我们想显示一条消息 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 的间隔更新。