原文: https://www.programiz.com/swift-programming/repeat-while-loop
在上一篇文章中,我们了解了for-in循环,用于在一定次数下运行一组任务。 在本文中,您将学习在未知迭代次数时使用while和repeat..while作为for-in循环的替代方法。
while循环执行一组语句,直到条件变为false为止。 当第一次迭代开始之前未知迭代次数时,最好使用此类循环。 Swift 提供了两种while循环:
该循环在每次通过循环的开始时求值其条件。
while循环的语法为:
while (TestExpression) {
// statements
}TestExpression是布尔表达式。
如果将TestExpression求值为true,
while循环内的语句被执行。- 并再次求值
TestExpression。
该过程一直进行到TestExpression求值为false为止。 如果TestExpression求值为false,则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 在上述程序中,变量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 |
该循环在每次循环结束时求值其条件。repeat...while循环类似于while循环,但有一个关键区别。 在检查测试表达式之前,执行一次repeat ... while循环主体。
repeat..while循环的语法为:
repeat {
// statements
...
} while (testExpression)repeat...while循环的主体执行一次(在检查测试表达式之前)。 只有这样,才检查testExpression。
如果将testExpression求值为true,则执行循环体内的语句,然后再次求值testExpression。 该过程一直进行到testExpression求值为false为止。
当testExpression为false时,repeat..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循环内的语句,否则循环终止。
执行步骤
| 迭代 | 条件(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中,条件是在开始时检查的,然后在其中执行语句。
如果测试表达式的取值从未为false,则while和repeat..while循环的主体将执行无数次。
while (true) {
print("Hello, World!")
}repeat {
print("Hello, World!")
} while (true)运行该程序时,输出为:
Hello, World!
Hello, World!
.
.
.当您运行程序时,两个循环都将无限次执行print("Hello, World!")语句。 因此,您可以看到连续输出您好,世界! 控制台中的。

