编辑这个页面须要登录或更高权限!
在本文中,您将学习在Swift编程中创建while和repeat... while循环。
在上一篇文章中,我们了解了for-in循环以运行一定次数的一组任务。在本文中,您将学习在迭代次数未知时使用while和repeat..while作为for-in循环的代替方法。
while循环执行一组语句,直到条件变为false为止。当第一次迭代开始之前未知迭代次数时,最好使用此类循环。Swift提供了两种while循环:
该循环在每次通过循环的开始时评估其条件。
while循环的语法为:
while (TestExpression) { // 语句 }
TestExpression是一个布尔表达式。
如果 TestExpression 被计算为true,
while 循环内的语句将被执行。
并且 TestExpression 被再次计算。
继续进行此过程,直到将 TestExpression 计算为 false。如果 TestExpression 计算结果为false,则while循环终止。
var currentLevel:Int = 0, finalLevel:Int = 5 let gameCompleted = true while (currentLevel <= finalLevel) { //玩游戏 if gameCompleted { print("你已经通过了关卡 \(currentLevel)") currentLevel += 1 } } print("在while循环之外")
运行该程序时,输出为:
你已经通过了关卡 0 你已经通过了关卡 1 你已经通过了关卡 2 你已经通过了关卡 3 你已经通过了关卡 4 你已经通过了关卡 5 在while循环之外
在上面的程序中,变量currentLevel和finalLevel被初始化为0,常量gameCompleted被初始化为true。
在while循环的每次迭代中,它都会检查判断条件 currentLevel <= finalLevel 。如果条件返回 true,则继续执行while循环内的语句,否则终止循环。
迭代 | 条件(currentLevel <= finalLevel) | 输出 |
---|---|---|
1 | 0 <= 5 (true) | 你已经通过了关卡 0 |
2 | 1 <= 5 (true) | 你已经通过了关卡 1 |
3 | 2 <= 5 (true) | 你已经通过了关卡 2 |
4 | 3 <= 5 (true) | 你已经通过了关卡 3 |
5 | 4 <= 5 (true) | 你已经通过了关卡 4 |
6 | 5 <= 5 (true) | 你已经通过了关卡 5 |
7 | 6 <= 5 (false) | 在while循环之外 |
该循环在每次循环结束时评估其条件。repeat ... while循环 与 while循环相似,但有一个关键区别。在检查计算 测试表达式(testExpression) 之前,执行一次 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 { //玩游戏 if gameCompleted { print("你已经通过了关卡 \(currentLevel)") currentLevel += 1 } } while (currentLevel <= finalLevel) print("在重复while循环之外")
运行该程序时,输出为:
你已经通过了关卡 0 你已经通过了关卡 1 你已经通过了关卡 2 你已经通过了关卡 3 你已经通过了关卡 4 你已经通过了关卡 5 outside of repeat while loop
在上面的示例中,循环内的语句首次执行。对于下一次迭代,它检查条件currentLevel <= finalLevel。
如果条件返回true,则执行while循环内的语句,否则循环终止。
Iteration | Condition (currentLevel <= finalLevel) | Output |
---|---|---|
1 | 0 <= 5 (true) | 你已经通过了关卡 0 |
2 | 1 <= 5 (true) | 你已经通过了关卡 1 |
3 | 2 <= 5 (true) | 你已经通过了关卡 2 |
4 | 3 <= 5 (true) | 你已经通过了关卡 3 |
5 | 4 <= 5 (true) | 你已经通过了关卡 4 |
6 | 5 <= 5 (true) | 你已经通过了关卡 5 |
7 | 6 <= 5 (false) | 在重复while循环之外 |
尽管repeat 和 repeat while循环具有相同的执行步骤,但条件 currentLevel <= finalLevel 在 repeat... while循环中,仅在执行其中的语句之后才执行该条件的计算。
但是在中while,currentLevel <= finalLevel 条件是在开始执行条件之前先检查的。
如果测试表达式永远不会计算为false,则while的主体 和 repeat..while循环被执行无数次。
while (true) { print("Hello, World!") }
repeat { print("Hello, World!") } while (true)
运行该程序时,输出为:
Hello, World! Hello, World! . . .
当您运行程序时,两个循环都将无限次执行语句 print("Hello, World!") 。因此,您可以看到在控制台中,连续的输出