Swift for-in 循环

在本章节中,我们将通过示例学习如何在 Swift 中使用 for-in 循环。

在计算机编程中,循环用于重复执行代码块。

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

Swift 中有 3 种类型的循环:


Swift for-in 循环

在 Swift 中,for-in 循环用于将代码块运行一定次数。它用于迭代任何序列,如数组、范围、字符串等。

for-in 循环的语法为:

  1. for val in sequence{
  2. // statements
  3. }

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


for-in 循环流程图


循环数组实例

  1. // access items of an array
  2. let languages = ["Swift", "Java", "Go", "JavaScript"]
  3. for language in languages {
  4. print(language)
  5. }

结果如下:

  1. Swift
  2. Java
  3. Go
  4. JavaScript

在上面的示例中,我们创建了一个名为 languages 的数组。

最初,language 的值被设置为数组的第一个元素,即 Swift,因此执行循环中的 print 语句。

使用数组的下一个元素更新语言,并再次执行 print 语句。这样,循环将一直运行,直到访问数组的最后一个元素。


带有 where 子句的 for 循环

在 Swift 中,我们还可以在循环中添加带有 forwhere 子句。它用于在循环中实现过滤。也就是说,如果 where 子句中的条件返回 true,则执行循环。

  1. // remove Java from an array
  2. let languages = ["Swift", "Java", "Go", "JavaScript"]
  3. for language in languages where language != "Java"{
  4. print(language)
  5. }

结果为:

  1. Swift
  2. Go
  3. JavaScript

在上面的实例中,我们使用了 for-in 循环来访问语言的每个元素。注意在 for-in 循环中使用 where 子句。

for language in languages where language != "Java"

这里,如果 where 子句中的条件返回 true,则执行循环中的代码。否则,不执行。

迭代语言条件: != "Java"结果
第 1 次SwifttrueSwift 被打印
第 2 次JavafalseJava 没有被打印
第 3 次GotrueGo 被打印
第 4 次JavaScripttrueJavaScript 被打印

带范围的 for 循环

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

  1. var values = 1...3

这里,1…3 义了包含值 123 的范围。

在 Swift 中,我们可以使用 for 循环在一个范围内迭代。例如:

  1. // iterate from i = 1 to 1 = 3
  2. for i in 1...3 {
  3. print(i)
  4. }

结果为:

  1. 1
  2. 2
  3. 3

在上面的实例中,我们使用 for-in 循环在 1 到 3 的范围内迭代。

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

迭代条件行为
第 1 次true1 被打印。i 增长为 2
第 2 次true2 被打印。i 增长为 3
第 3 次true3 被打印。i 增长为 4
第 4 次false循环结束

用于具有跨幅度(Stride)功能的循环

如果我们希望循环在每次迭代中增加某个固定值,而不是范围,我们必须使用幅度(Stride)(from:to:by)函数。例如:

  1. for i in stride(from: 1, to: 10, by: 2) {
  2. print(i)
  3. }

结果为:

  1. 1
  2. 3
  3. 5
  4. 7
  5. 9

在上面的实例中,循环以 2 的间隔在 110 的范围内迭代。但是,序列中不包括 10

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