在上一篇文章中,我们了解了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循环内的语句,否则循环终止。
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
为止。
如果testExpression为false
,则repeat..while循环终止。
重复… while循环的流程图
示例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循环内的语句,否则循环终止。
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 |
尽管while
和currentLevel <= finalLevel
repeat while
循环都具有相同的执行步骤,但仅在执行循环内部的语句之后才执行条件currentLevel <= finalLevel
on repeat while
循环。
但是在while
,在开始执行条件之前,先检查条件。
3.无限while循环
如果测试表达式的取值从未为false
,则while
和repeat..while
循环的主体将执行无数次。
示例3:无限while循环
while (true) {
print("Hello, World!")
}
repeat {
print("Hello, World!")
} while (true)
运行该程序时,输出为:
Hello, World!
Hello, World!
.
.
.
当您运行该程序时,两个循环都会无限次地执行print("Hello, World!")
语句。因此,您可以看到连续的输出