English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Swift for-in 循环

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.

¿Por qué necesitas un bucle for-¿bucle in?

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.

For-Sintaxis del bucle in

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.

¿Cómo funciona esto?

  • 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.

Ejemplo1: for-cómo funciona el bucle in en Swift

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)

la ejecución de los pasos dentro del bucle
Iteración

el valor devuelto desde el rango (i)

Salida
11¡Hola mundo! El valor es 1
22¡Hola mundo! El valor es 2
33¡Hola mundo! El valor es 3

en for-en el bucle

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> {
}

Ejemplo2<alguno trabajo aquí>-:en for

//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.

for sin valor de rango-en pasos del bucle
Iteraciónvalores devueltos desde el rangoSalida
1Descartar¡Hola mundo!
2Descartar¡Hola mundo!

usar for con intervalo fijo-en el bucle

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.

Ejemplo3:usar stride en for-en el bucle

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.

usar stride para ejecutar pasos dentro del bucle
valorcondición (Valor < Final)i (salida)
11 < 10 (true)1
1 + 2 = 33 < 10 (true)3
1 + 2 * 2 = 55 < 10 (true)5
1 + 3 * 2 = 77 < 10 (true)7
1 + 4 * 2 = 99 < 10 (true)9
1 + 5 * 2 = 1111 < 10 (false)Detiene

¿Cómo usar for in-¿cómo recorrer los elementos de una colección en un bucle?

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:

Ejemplo4:Usar for-Acceder a los elementos del array (conjunto) en el bucle in

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.

Ejemplo5:Usar for-Acceder a los elementos del array (conjunto) en el bucle in

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
!

¿Cómo usar for in-Acceder al índice del conjunto en el bucle in?

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:

Ejemplo6:Usar for-Acceder al índice del array en el bucle in

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.

¿Cómo acceder a cada uno de estos elementos en el bucle for in?-¿Cómo usar la suboración where dentro del bucle in para filtrar elementos?

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.

Usar for-Filtrar pasos de ejecución del bucle in
Iteraciónvaluevalue != “!”Salida
1ItrueI
2true
3StrueS
4wtruew
5itruei
6ftruef
7ttruet
8!false