📜  Swift的while并重复while循环

📅  最后修改于: 2020-10-09 16:07:35             🧑  作者: Mango

在本文中,您将学习在Swift编程中创建while并重复… while循环。

在上一篇文章中,我们了解了for-in循环以运行一定次数的一组任务。在本文中,您将学习使用whilerepeat..while作为迭代次数未知的for-in循环的替代方法。

while循环执行一组语句,直到条件变为false为止。当第一次迭代开始之前未知迭代次数时,最好使用此类循环。 Swift提供了两种while循环:


1. Swift While循环

该循环在每次通过循环的开始时评估其条件。

while循环的语法为:

while (TestExpression) {
    // statements
}

while循环如何工作?

TestExpression是一个布尔表达式。

如果TestExpression评估为true

  • while循环内的语句将被执行。
  • 并再次评估TestExpression

这个过程一直进行到TestExpression被评估为false为止。如果TestExpression计算结果为false ,则while循环终止。


While循环流程图

Swift while loop flowchart


示例1:While循环

var currentLevel:Int = 0, finalLevel:Int = 5
let gameCompleted = true
while (currentLevel <= finalLevel) {
    //play game
    if gameCompleted {
        print("You have passed level \(currentLevel)")
        currentLevel += 1
    }
}
print("outside of while loop")

运行该程序时,输出为:

You have passed level 0
You have passed level 1
You have passed level 2
You have passed level 3
You have passed level 4
You have passed level 5
outside of while loop

在上面的程序中,变量currentLevelfinalLevel初始化为0,常量gameCompleted初始化为true

在while循环的每次迭代中,它将检查条件currentLevel <= finalLevel 。如果条件返回true ,则执行while循环内的语句,否则循环终止。

Execution steps
Iteration Condition (currentLevel <= finalLevel) Output
1 0 <= 5 (true) You have passed level 0
2 1 <= 5 (true) You have passed level 1
3 2 <= 5 (true) You have passed level 2
4 3 <= 5 (true) You have passed level 3
5 4 <= 5 (true) You have passed level 4
6 5 <= 5 (true) You have passed level 5
7 6 <= 5 (false) outside of while loop

2.循环时重复

该循环在每次循环结束时评估其条件。repeat … while循环与while循环相似,但有一个关键区别。在检查测试表达式之前,执行一次repeat … while循环主体。

repeat..while循环的语法为:

repeat {
    // statements
    ...
} while (testExpression)

重复… while循环如何工作?

repeat … while循环的主体执行一次(在检查测试表达式之前)。只有这样, 检查testExpression

如果将testExpression评估为true ,则执行循环体内的语句,然后再次评估testExpression 。这个过程一直进行到testExpression被评估为false为止。

如果testExpressionfalse ,则repeat..while循环终止。


重复… while循环的流程图

Swift repeat..while loop flowchart


示例2:重复while循环

var currentLevel:Int = 0, finalLevel:Int = 5
let gameCompleted = true
repeat {
    //play game
    if gameCompleted {
        print("You have passed level \(currentLevel)")
        currentLevel += 1
    }
} while (currentLevel <= finalLevel)
print("outside of repeat while loop")

运行该程序时,输出为:

You have passed level 0
You have passed level 1
You have passed level 2
You have passed level 3
You have passed level 4
You have passed level 5
outside of repeat while loop

在上面的示例中,循环内的语句首次执行。对于下一次迭代,它将检查条件currentLevel <= finalLevel

如果条件返回true ,则执行while循环内的语句,否则循环终止。

Execution steps
Iteration Condition (currentLevel <= finalLevel) Output
1 0 <= 5 (true) You have passed level 0
2 1 <= 5 (true) You have passed level 1
3 2 <= 5 (true) You have passed level 2
4 3 <= 5 (true) You have passed level 3
5 4 <= 5 (true) You have passed level 4
6 5 <= 5 (true) You have passed level 5
7 6 <= 5 (false) outside of repeat while loop

尽管whilecurrentLevel <= finalLevel repeat while循环都具有相同的执行步骤,但仅在执行循环内部的语句之后才执行条件currentLevel <= finalLevel on repeat while循环。

但是在while ,在开始执行条件之前,先检查条件。


3.无限while循环

如果测试表达式的取值从未为false ,则whilerepeat..while循环的主体将执行无数次。

示例3:无限while循环

while (true) {
   print("Hello, World!")
}

repeat {
   print("Hello, World!")

} while (true)

运行该程序时,输出为:

Hello, World!
Hello, World!
.
.
.

当您运行该程序时,两个循环都会无限次地执行print("Hello, World!")语句。因此,您可以看到连续的输出你好,世界! 在控制台中。