原文: 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 = 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 |
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 = 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
中,条件是在开始时检查的,然后在其中执行语句。
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!")
语句。 因此,您可以看到连续输出您好,世界! 控制台中的。