编辑这个页面须要登录或更高权限!

Swift while 和 repeat...while 循环

在本文中,您将学习在Swift编程中创建while和repeat... while循环。

在上一篇文章中,我们了解了for-in循环以运行一定次数的一组任务。在本文中,您将学习在迭代次数未知时使用while和repeat..while作为for-in循环的代替方法。

while循环执行一组语句,直到条件变为false为止。当第一次迭代开始之前未知迭代次数时,最好使用此类循环。Swift提供了两种while循环:

1. Swift While循环

该循环在每次通过循环的开始时评估其条件。

while循环的语法为:

while (TestExpression) {
    // 语句
}

while 循环如何工作?

TestExpression是一个布尔表达式。

如果 TestExpression 被计算为true,

  • while 循环内的语句将被执行。

  • 并且 TestExpression 被再次计算。

继续进行此过程,直到将 TestExpression 计算为 false。如果 TestExpression 计算结果为false,则while循环终止。

While循环流程图

Swift While循环流程图

示例1: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)输出
10 <= 5 (true)你已经通过了关卡 0
21 <= 5 (true)你已经通过了关卡 1
32 <= 5 (true)你已经通过了关卡 2
43 <= 5 (true)你已经通过了关卡 3
54 <= 5 (true)你已经通过了关卡 4
65 <= 5 (true)你已经通过了关卡 5
76 <= 5 (false)在while循环之外

2.重复while循环

该循环在每次循环结束时评估其条件。repeat ... while循环 与 while循环相似,但有一个关键区别。在检查计算 测试表达式(testExpression) 之前,执行一次 repeat ... while 循环主体。

repeat..while循环的语法为:

repeat {
    // statements
    ...
} while (testExpression)

repeat ... while循环如何工作?

repeat ... while 循环的主体执行一次(在检查测试表达式之前)。只有这样,testExpression才被检查。

如果 testExpression 被计算为 true,则将执行循环体内的语句,然后再次对 testExpression 进行计算。一直进行到 testExpression 被计算为 false 为止。

当testExpression是false时,repeat..while循环终止。

repeat ... while循环的流程图

快速重复..while循环流程图

示例2: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循环内的语句,否则循环终止。

执行步骤
IterationCondition (currentLevel <= finalLevel)Output
10 <= 5 (true)你已经通过了关卡 0
21 <= 5 (true)你已经通过了关卡 1
32 <= 5 (true)你已经通过了关卡 2
43 <= 5 (true)你已经通过了关卡 3
54 <= 5 (true)你已经通过了关卡 4
65 <= 5 (true)你已经通过了关卡 5
76 <= 5 (false)

在重复while循环之外

尽管repeat 和 repeat while循环具有相同的执行步骤,但条件 currentLevel <= finalLevel 在 repeat... while循环中,仅在执行其中的语句之后才执行该条件的计算。

但是在中while,currentLevel <= finalLevel 条件是在开始执行条件之前先检查的。

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!") 。因此,您可以看到在控制台中,连续的输出“Hello, World!”