原文: https://www.programiz.com/swift-programming/repeat-while-loop
在本文中,您将学习在 Swift 编程中创建while和repeat..while循环。
在上一篇文章中,我们了解了for-in循环,用于在一定次数下运行一组任务。 在本文中,您将学习在未知迭代次数时使用while和repeat..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循环流程图

示例 1:While循环
var currentLevel:Int = 0, finalLevel:Int = 5let gameCompleted = truewhile (currentLevel <= finalLevel) {//play gameif gameCompleted {print("You have passed level \(currentLevel)")currentLevel += 1}}print("outside of while loop")
运行该程序时,输出为:
You have passed level 0You have passed level 1You have passed level 2You have passed level 3You have passed level 4You have passed level 5outside of while loop
在上述程序中,变量currentLevel和finalLevel初始化为 0,常量gameCompleted初始化为true。
在while循环的每次迭代中,它都会检查条件currentLevel <= finalLevel。 如果条件返回true,则执行while循环内的语句,否则循环终止。
执行步骤
| 迭代 | 条件(currentLevel <= finalLevel) |
输出 |
|---|---|---|
| 1 | 0 <= 5(真) |
You have passed level 0 |
| 2 | 1 <= 5(真) |
You have passed level 1 |
| 3 | 2 <= 5(真) |
You have passed level 2 |
| 4 | 3 <= 5(真) |
You have passed level 3 |
| 5 | 4 <= 5(真) |
You have passed level 4 |
| 6 | 5 <= 5(真) |
You have passed level 5 |
| 7 | 6 <= 5(假) |
outside of while loop |
2.repeat...while循环
该循环在每次循环结束时求值其条件。repeat...while循环类似于while循环,但有一个关键区别。 在检查测试表达式之前,执行一次repeat ... while循环主体。
repeat..while循环的语法为:
repeat {// statements...} while (testExpression)
repeat...while循环如何工作?
repeat...while循环的主体执行一次(在检查测试表达式之前)。 只有这样,才检查testExpression。
如果将testExpression求值为true,则执行循环体内的语句,然后再次求值testExpression。 该过程一直进行到testExpression求值为false为止。
当testExpression为false时,repeat..while循环终止。
repeat...while循环的流程图

示例 2:repeat...while循环
var currentLevel:Int = 0, finalLevel:Int = 5let gameCompleted = truerepeat {//play gameif gameCompleted {print("You have passed level \(currentLevel)")currentLevel += 1}} while (currentLevel <= finalLevel)print("outside of repeat while loop")
运行该程序时,输出为:
You have passed level 0You have passed level 1You have passed level 2You have passed level 3You have passed level 4You have passed level 5outside of repeat while loop
在上面的示例中,循环内的语句首次执行。 对于下一次迭代,它将检查条件currentLevel <= finalLevel。
如果条件返回true,则执行while循环内的语句,否则循环终止。
执行步骤
| 迭代 | 条件(currentLevel <= finalLevel) |
输出 |
|---|---|---|
| 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 |
尽管while和repeat while循环具有相同的执行步骤,但是repeat while循环上的条件currentLevel <= finalLevel仅在执行其中的语句之后才执行。
但是在while中,条件是在开始时检查的,然后在其中执行语句。
3.无限循环
如果测试表达式的取值从未为false,则while和repeat..while循环的主体将执行无数次。
示例 3:无限while循环
while (true) {print("Hello, World!")}
repeat {print("Hello, World!")} while (true)
运行该程序时,输出为:
Hello, World!Hello, World!...
当您运行程序时,两个循环都将无限次执行print("Hello, World!")语句。 因此,您可以看到连续输出您好,世界! 控制台中的。
