上一章Swift教程请查看:swift for-in循环语句
在本文中,你将学习在swift编程中创建while和repeat while循环。
在前一篇文章中,我们了解了forin循环,即在一定的时间内运行一组任务。在本文中,你将学习如何使用while和repeat..while,当迭代次数未知时作为for-in循环的一种替代方法。
while循环执行一组语句,直到条件变为false,当在第一次迭代开始之前迭代的次数未知时,最好使用这些类型的循环,Swift提供了两种while循环:
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("while循环的外部")
在上面的程序中,变量currentLevel和finalLevel初始化为0,常量gameCompleted初始化为true。
在while循环的每个迭代中,它检查条件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) |
while循环的外部 |
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("在repeat while循环之外")
在上面的例子中,循环内的语句第一次执行,对于下一次迭代,它检查条件currentLevel <= finalLevel。
如果条件返回true,
while循环中的语句将被执行,否则循环将终止。
执行步骤
迭代 | 条件(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) |
在repeat while循环之外 |
虽然while和repeat while循环具有相同的执行步骤,但条件currentLevel
<= finalLevel on repeat while循环仅在执行其中的语句之后执行。
但是在while中,在执行语句之前,首先检查条件。
无限while循环
如果测试表达式从不计算为false,则while和repeat..while循环执行无限次。
例3:无限while循环
while (true) {
print("Hello, World!")
}
repeat {
print("Hello, World!")
} while (true)
当你运行该程序时,两个循环将执行print(“Hello, World!”)语句无数次。所以,你可以看到连续输出Hello,
World!在控制台。