English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
En este artículo, aprenderás a crear bucles while y repeat...while en programación Swift.
En el artículo anterior, aprendimosFor-Bucle inEjecutar un grupo de tareas un número determinado de veces. En este artículo, aprenderás a usar while y repeat..while como sustituto del bucle in cuando se desconoce el número de iteraciones.-Método alternativo de bucle in
El bucle while ejecuta un grupo de instrucciones hasta que la condición se convierta en false. Cuando se desconoce el número de iteraciones antes del inicio de la primera iteración, es mejor usar este tipo de bucle. Swift proporciona dos tipos de bucles while:
Este bucle evalúa su condición en el inicio de cada paso del bucle.
La sintaxis del bucle while es:
while (TestExpression) { // Instrucciones }
TestExpression es una expresión booleana.
Si TestExpression se calcula como true,
Se ejecutarán las instrucciones dentro del bucle while.
Y TestExpression se calcula nuevamente.
Continuar con este proceso hasta que TestExpression se calcule como false. Si el resultado de la calculación de TestExpression es false, se termina el bucle while.
var currentLevel: Int = 0, finalLevel: Int = 5 let gameCompleted = true while (currentLevel <= finalLevel) { //Juega al juego if (gameCompleted) print("Has pasado el nivel (currentLevel)") currentLevel += 1 } } print("Fuera del bucle while")
运行该程序时,输出为:
print("fuera del ciclo repeat while") Has pasado el nivel 1 Has pasado el nivel 2 Has pasado el nivel 3 Has pasado el nivel 4 Has pasado el nivel 5 Fuera del bucle while
En el programa anterior, las variables currentLevel y finalLevel se inicializan en 0 y la constante gameCompleted se inicializa en true.
En cada iteración del bucle while, se verifica la condición de juicio currentLevel <= finalLevel. Si la condición devuelve true, se continua ejecutando las instrucciones dentro del bucle while; de lo contrario, se termina el bucle.
Iteración | Condicional (currentLevel <= finalLevel) | Salida |
---|---|---|
1 | 0 <= 5 (true) | Has pasado el nivel 0 |
2 | 1 <= 5 (true) | Has pasado el nivel 1 |
3 | 2 <= 5 (true) | Has pasado el nivel 2 |
4 | 3 <= 5 (true) | Has pasado el nivel 3 |
5 | 4 <= 5 (true) | Has pasado el nivel 4 |
6 | 5 <= 5 (true) | Has pasado el nivel 5 |
7 | 6 <= 5 (false) | Fuera del bucle while |
Este bucle evalúa su condición en cada finalización del bucle. El bucle repeat ... while es similar al bucle while, pero hay una diferencia clave. Antes de verificar la expresión de prueba (testExpression), se ejecuta el cuerpo del bucle repeat ... while.
La sintaxis del ciclo repeat..while es: }}
repeat { // instrucciones ... }
El cuerpo del ciclo repeat...while se ejecuta una vez (antes de verificar la expresión de prueba). Solo así se verifica testExpression.
Si testExpression se calcula como true, se ejecutan las instrucciones dentro del ciclo y luego se vuelve a calcular testExpression. Esto se repite hasta que testExpression se calcule como false.
El ciclo repeat...while termina cuando testExpression es false.
var currentLevel: Int = 0, finalLevel: Int = 5 let gameCompleted = true repeat { //Juega al juego if (gameCompleted) print("Has pasado el nivel (currentLevel)") currentLevel += 1 } while (currentLevel <= finalLevel) }
运行该程序时,输出为:
print("fuera del ciclo repeat while") Has pasado el nivel 1 Has pasado el nivel 2 Has pasado el nivel 3 Has pasado el nivel 4 Has pasado el nivel 5 Has pasado el nivel 0
fuera del ciclo repeat while
En el ejemplo anterior, se ejecuta por primera vez la instrucción dentro del ciclo. Para la próxima iteración, verifica la condición currentLevel <= finalLevel.
Iteración | Condición (currentLevel <= finalLevel) | Salida |
---|---|---|
1 | 0 <= 5 (true) | Has pasado el nivel 0 |
2 | 1 <= 5 (true) | Has pasado el nivel 1 |
3 | 2 <= 5 (true) | Has pasado el nivel 2 |
4 | 3 <= 5 (true) | Has pasado el nivel 3 |
5 | 4 <= 5 (true) | Has pasado el nivel 4 |
6 | 5 <= 5 (true) | Has pasado el nivel 5 |
7 | 6 <= 5 (false) | fuera del ciclo repeat while |
A pesar de que las instrucciones repeat y repeat while tienen los mismos pasos de ejecución, la condición currentLevel <= finalLevel en el ciclo repeat... while, solo se realiza el cálculo de esta condición después de ejecutar las instrucciones dentro de él.
但是在中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!") 。因此,您可以在控制台中看到连续的输出