English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
En este artículo, aprenderás sobre for-bucle in, sus ejemplos de uso y variantes.
for-in bucle se utiliza para ejecutar un conjunto de tareas en un tiempo fijo. Estos bucles recorren cualquier secuencia, como elementos de un array, un rango o caracteres en una cadena.
También usamos for-El bucle in ejecuta procesos repetitivos en un tiempo fijo.
Imagina que alguien te dice que escribes un programa que muestre Hello, World! en la pantalla. Tu solución sería:
print("¡Hola, mundo!")
¿Qué harás si deciden cambiar de idea y te piden escribir un programa que muestre Hello, World! en la pantalla cinco veces?. Si no tienes conocimientos de bucles, tu solución podría ser:
print("¡Hola, mundo!") print("¡Hola, mundo!") print("¡Hola, mundo!") print("¡Hola, mundo!") print("¡Hola, mundo!")
Bueno, completar cinco veces el mismo código para hacer el mismo trabajo parece un desperdicio de tiempo. Si es así, ¿qué harás si alguien te pide escribir un programa que muestre Hello, World! en la pantalla cientos o incluso millones de veces?
Una solución ingenua sería escribir la instrucción print una cantidad dada de veces. ¿Suena loco, ¿verdad? Pero, utilizando for-En pocas líneas de código del bucle in, se puede encontrar una mejor solución:
for i in 1...100 { //Imprimir Hello World en la pantalla 100 veces print("¡Hola, mundo!") }
No te preocupes por la sintaxis, discutiremos más abajo.
Puedes crear un bucle for in en Swift de la siguiente manera:
for <value> in <range> { for _ in <rango> { }
El bucle superior itera un rango, y podemos acceder a cada elemento devuelto por el rango en la variable <value>. Si no entiendes los rangos, puedes ver el siguiente artículo:Rangos de Swift.
La secuencia que se itera es un <range>.
se establece <value> como el primer número dentro del rango y se ejecutan las instrucciones dentro del bucle < Algunos trabajos aquí >
después de la ejecución de la instrucción, <value> se actualiza para contener el segundo valor dentro de <range>, y la instrucción <Algunos trabajos aquí> se ejecuta nuevamente.
Este proceso continúa hasta que alcanza el final del rango y se detiene el bucle.
for i in 1...3 .< print("¡Hola mundo! El valor es \(i)") }
Al ejecutar el programa, la salida será:
¡Hola mundo! El valor es 1 ¡Hola mundo! El valor es 2 ¡Hola mundo! El valor es 3
En el programa anterior, el rango de la secuencia que se iterará es1(.. <),por lo que el rango de la secuencia a recorrer es3.
se establece el valor de i al rango (1. El primer número dentro del paréntesis, y se actualiza a la siguiente numeración del rango en cada iteración. Este proceso continúa hasta que el rango (3. El final del paréntesis)
Iteración | el valor devuelto desde el rango (i) | Salida |
---|---|---|
1 | 1 | ¡Hola mundo! El valor es 1 |
2 | 2 | ¡Hola mundo! El valor es 2 |
3 | 3 | ¡Hola mundo! El valor es 3 |
descartar valores de rango en el bucle
Si no se utiliza un valor de rango en el bucle, se puede descartar en Swift (guión bajo _) como se muestra a continuación: for _ in <rango> { }
//descartar valores en el bucle Este ejemplo omite valores y utiliza el operador de rango semicerrado 1for _ in3 .< { }
Al ejecutar el programa, la salida será:
print("¡Hola mundo!") print("¡Hola mundo!")
¡Hola mundo!En el programa anterior, se utilizaoperador de rango semicerrado1(.. <),por lo que el rango de la secuencia a recorrer es2hasta1que incluye el límite inferior (3) pero no incluye el límite superior (
el guión bajo _ ignora el rango (1Devuelve los valores en el rango) y ejecuta la declaración print. Llame nuevamente a la declaración print para la próxima iteración y finaliza el proceso porque2es el último valor en el rango.
Iteración | valores devueltos desde el rango | Salida |
---|---|---|
1 | Descartar | ¡Hola mundo! |
2 | Descartar | ¡Hola mundo! |
Si desea que el bucle aumente en un valor fijo (en lugar de un rango) en cada iteración, debe usar el método stride.
let intervalo = 2 for i in stride(from: 1, to: 10, by: intervalo) { print(i) }
Al ejecutar el programa, la salida será:
1 3 5 7 9
En el programa anterior, la función stride devuelve la secuencia de números:1、3、5、7、9.
el valor de i se establece en la secuencia (1),y ejecute la declaración print dentro del bucle, que muestra " 1”
Después de ejecutar esta declaración, actualice el valor de i a otro valor (3),y luego llame nuevamente a la declaración print. Este proceso continúa hasta que se accede a todos los elementos de la secuencia.
valor | condición (Valor < Final) | i (salida) |
---|---|---|
1 | 1 < 10 (true) | 1 |
1 + 2 = 3 | 3 < 10 (true) | 3 |
1 + 2 * 2 = 5 | 5 < 10 (true) | 5 |
1 + 3 * 2 = 7 | 7 < 10 (true) | 7 |
1 + 4 * 2 = 9 | 9 < 10 (true) | 9 |
1 + 5 * 2 = 11 | 11 < 10 (false) | Detiene |
Supongamos que tiene un array de cadenas, como se muestra a continuación. Si no conoce los arrays, puede considerarlos como contenedores únicos que pueden almacenar múltiples valores. Para más detalles, consulteSwift Array.
let programaciónLanguages = ["Swift", "Java", "Go", "JavaScript", "Kotlin", "Python"]
¿Qué hacer si alguien le dice que imprima todos los lenguajes de programación?
Un método es usar índices de programaciónLanguages[0], programaciónLanguages[1]... para acceder a estos elementos, y así sucesivamente, hasta obtener todos los elementos. Pero esto es demasiado tedioso.
Por lo tanto, el bucle es útil. Puede usar el bucle for in para iterar:
let programmingLanguages = ["Swift", "Java", "Go", "JavaScript", "Kotlin", "Python"] for language in programmingLanguages { print(language) }
Al ejecutar el programa, la salida será:
Swift Java Go JavaScript Kotlin Python
En el programa anterior, la secuencia que se itera es un array de cadenas.
El valor de language se establece como el primer elemento del array y se ejecuta la sentencia print dentro del bucle, que muestra "Swift" en la consola.
Después de que la sentencia se ejecute, el valor de language se actualizará con el siguiente elemento del array y se llamará nuevamente la sentencia print. Este proceso se repite hasta que se accede al último elemento del array.
Dado que en SwiftCadenaTambién es un conjunto, por lo que puede usar un bucle for para acceder a cada carácter de la cadena.
for value in "I♥Swift!" { print(value) }
Al ejecutar el programa, la salida será:
I ♥ S w i f t !
Si desea acceder al índice del array (la posición del elemento en el array, es decir, 0,1、2),entonces debe usar el método enumerated:
let programmingLanguages = ["Swift", "Java", "Go", "JavaScript", "Kotlin", "Python"] for (index, language) in programmingLanguages.enumerated() { print("\(index):\(language)") }
Al ejecutar el programa, la salida será:
0:Swift 1:Java 2:Go 3:JavaScript 4:Kotlin 5:Python
Aquí, el método enumera devuelve un tupla (Int, String) que contiene cada proyecto del array, formado por el índice (Int) y el valor (String). Por ejemplo: (0,Swift), (1,Java)
Usando for-En el bucle for in, puede acceder a cada uno de estos elementos. Si no conoce el concepto de Tuple (tupla), puede considerarlo simplemente como un contenedor que puede contener valores de diferentes tipos.
También puede usarwhereLa suboración filtrará el contenido del bucle for
for value in "I♥Swift!" where value != "!" { print(value) //Eliminar exclamación }
Al ejecutar el programa, la salida será:
I ♥ S w i f t
En el programa anterior, la secuencia que se debe iterar es la cadena (conjunto de caracteres).
value se establece en el primer carácter de la cadena y se verifica con la condición where. Si la condición devuelve true, se ejecuta el bloque dentro del bucle (instrucción de impresión), que muestra “I” en la consola de control.
Después de la ejecución de la instrucción, value se actualizará al siguiente carácter de la cadena y se verificará la condición nuevamente. Si la condición devuelve false, no se ejecutará el bloque y value se actualizará al siguiente carácter.
Este proceso continúa hasta que se accede al último carácter de la cadena.
Iteración | value | value != “!” | Salida |
---|---|---|---|
1 | I | true | I |
2 | ♥ | true | ♥ |
3 | S | true | S |
4 | w | true | w |
5 | i | true | i |
6 | f | true | f |
7 | t | true | t |
8 | ! | false |