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

Swift for-in boucle

Dans cet article, vous découvrirez le for-in boucles, leurs exemples d'utilisation et variantes.

for-in pour exécuter un ensemble de tâches en un laps de temps fixe. Ces boucles itèrent sur n'importe quelle séquence, comme les éléments d'un tableau, une plage ou les caractères d'une chaîne.

Nous utilisons également for-La boucle in exécute des processus répétés en un laps de temps fixe.

Pourquoi avons-nous besoin de la boucle in-une boucle in ?

Imaginez, quelqu'un vous dit d'écrire un programme pour afficher Hello, World ! sur l'écran. Votre solution serait :

print("Bonjour, le monde!")

Si ils changent d'avis et vous disent d'écrire un programme pour afficher Hello, World ! cinq fois sur l'écran, que faire ? Si vous ne connaissez pas les boucles, votre solution pourrait être :

print("Bonjour, le monde!")
print("Bonjour, le monde!")
print("Bonjour, le monde!")
print("Bonjour, le monde!")
print("Bonjour, le monde!")

Eh bien, il semble que cela soit chronophage de terminer cinq fois le même code pour accomplir la même tâche. Si c'est le cas, que ferez-vous si quelqu'un vous demande d'écrire un programme pour afficher Hello, World ! sur l'écran plusieurs centaines ou même plusieurs millions de fois ?

Une solution infantile serait d'écrire une statement print pour chaque nombre donné. Ça semble folle, mais en utilisant for-Certaines lignes de code de la boucle in peuvent trouver une meilleure solution :

for i in 1...100 {
	//Afficher Hello World à l'écran 100 fois
	print("Bonjour, le monde!")
}

Ne vous inquiétez pas de la syntaxe, nous en parlerons ci-dessous.

For-Syntaxe de boucle in

Vous pouvez créer une boucle for in en Swift comme suit :

for <value> in <range> {
	<some work here>
}

La boucle ci-dessus itère une plage, et nous pouvons accéder à chaque élément retourné par cette plage dans la variable <value>. Si vous ne connaissez pas les plages, vous pouvez consulter l'article suivant :Plages Swift.

Comment fonctionne-t-il ?

  • La séquence itérée est une <range>.

  • Définir <value> comme le premier nombre de la plage et exécuter la statement < Certaines tâches ici >

  • Après l'exécution de la statement, <value> est mis à jour pour inclure la deuxième valeur de <range>, et la statement <Certaines tâches ici> est exécuté à nouveau.

  • Ce processus continue jusqu'à ce que la fin de la plage soit atteinte et que la boucle s'arrête.

示例1: for-la manière dont le in fonctionne en Swift

for i in 1...3 {
	print("Bonjour le monde ! La valeur est \(i)")
}

运行该程序时,输出为:

Bonjour le monde ! La valeur est 1
Bonjour le monde ! La valeur est 2
Bonjour le monde ! La valeur est 3

Dans le programme ci-dessus, la plage de séquence à itérer est1à3.

la valeur de i est définie sur la plage (1). Le premier nombre de la boucle, et il est mis à jour pour le prochain nombre de la plage à chaque itération. Ce processus continue jusqu'à ce que la plage (3. La fin de la boucle )

l'exécution de l'étape dans la boucle
迭代

la valeur retournée par la plage (i)

输出
11Bonjour le monde ! La valeur est 1
22Bonjour le monde ! La valeur est 2
33Bonjour le monde ! La valeur est 3

dans for-ignorer les valeurs de plage dans la boucle

Si vous n'utilisez pas de valeur de plage dans la boucle, vous pouvez utiliser (tiret bas _) pour ignorer en Swift, comme suit :

for _ in <range> {
	<some work here>
}

示例2:dans for-ignorer les valeurs de plage dans la boucle

//Dans cet exemple, les valeurs sont ignorées et l'opérateur de plage semi-ouverte est utilisé
for _ in 1..<3 {
	print("Hello world!")
}

运行该程序时,输出为:

Hello world!
Hello world!

Dans le programme ci-dessus, en raison de l'utilisationopérateur de plage semi-ouverte(.. <),donc la plage de la séquence à parcourir est1à2y compris la limite inférieure (1) mais ne comprend pas la limite supérieure (3)。

le tiret bas _ ignore la plage (1) des valeurs, et exécutez l'instruction print. Appeler à nouveau l'instruction print pour l'itération suivante, et le processus se termine car2est la dernière valeur de la plage.

for sans valeur de plage-étapes de boucle en boucle
迭代les valeurs retournées par l'intervalle输出
1IgnorerHello world!
2IgnorerHello world!

Utiliser un intervalle fixe for-en boucle

Si vous souhaitez que la boucle augmente d'une valeur fixe à chaque itération (plutôt qu'un intervalle), vous devez utiliser la méthode stride.

示例3:utiliser stride for-en boucle

let interval = 2
for i in stride(from: 1, to: 10, by: interval) {
	print(i)
}

运行该程序时,输出为:

1
3
5
7
9

Dans le programme ci-dessus, la fonction stride retourne la séquence de nombres :1、3、5、7、9.

la valeur de i est définie sur la séquence (1) du premier nombre, et l'instruction print à l'intérieur de la boucle est exécutée, qui affiche " 1"

Après l'exécution de cette instruction, la valeur de i est mise à jour avec une autre valeur (3) et appeler à nouveau la directive print. Ce processus se poursuit jusqu'à ce que tous les éléments de la séquence soient visités.

exécuter des étapes de boucle internes en utilisant stride
valeurcondition (Value < Fin)i (sortie)
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)Stops

Comment utiliser for-comment accéder aux éléments de l'ensemble en boucle ?

Supposons que vous ayez un tableau de chaînes de caractères, comme suit. Si vous ne connaissez pas les tableaux, vous pouvez les considérer comme un conteneur unique capable de stocker plusieurs valeurs. Pour plus de détails, voirTableau Swift.

let programmingLanguages = ["Swift", "Java", "Go", "JavaScript", "Kotlin", "Python"]

Que faire si quelqu'un vous dit d'imprimer toutes les langues de programmation ?

Une méthode consiste à utiliser l'indice de valeur programmingLanguages[0], programmingLanguages[1]... pour accéder à ces éléments, et ainsi de suite, jusqu'à ce que tous les éléments soient obtenus. Mais c'est trop fastidieux.

Donc, la boucle est utile. Vous pouvez itérer avec une boucle for in :

示例4:使用for-dans une boucle for pour accéder aux éléments des tableaux (ensembles)

let programmingLanguages = ["Swift", "Java", "Go", "JavaScript", "Kotlin", "Python"]
for language in programmingLanguages {
      print(language)
}

运行该程序时,输出为:

Swift
Java
Go
JavaScript
Kotlin
Python

Dans le programme ci-dessus, la séquence à itérer est un tableau de chaînes de caractères.

La valeur de language est définie sur le premier élément du tableau, et l'instruction print à l'intérieur de la boucle est exécutée, affichant "Swift" dans le console.

Après l'exécution de l'instruction, la valeur de language sera mise à jour par l'élément suivant du tableau, et l'instruction print sera appelée à nouveau. Ce processus continue jusqu'à ce que l'élément final du tableau soit atteint.

示例5:使用for-dans une boucle for pour accéder aux éléments de la chaîne (ensemble)

En raison de ce que dans SwiftChaîneest également un ensemble, donc vous pouvez utiliser une boucle for pour accéder à chaque caractère de la chaîne.

for value in "I♥Swift!" {
	print(value)
}

运行该程序时,输出为:

I
♥
S
w
i
f
t
!

Comment utiliser for-dans une boucle for pour accéder aux indices des ensembles ?

Si vous souhaitez accéder aux indices (la position des éléments dans le tableau, c'est-à-dire 0,1、2),则需要使用 enumerated 方法:

示例6:使用for-dans une boucle for pour accéder aux indices des tableaux

let programmingLanguages = ["Swift", "Java", "Go", "JavaScript", "Kotlin", "Python"]
for (index, language) in programmingLanguages.enumerated() {
      print("\(index):\(language)")
}

运行该程序时,输出为:

0:Swift
1:Java
2:Go
3:JavaScript
4:Kotlin
5:Python

Ici, la méthode enumère chaque élément de l'array sous forme de paires composées de l'index (Int) et de la valeur (String) (Int, String). Par exemple : (0,Swift), (1,Java)

Utilisez for-dans une boucle for in, vous pouvez accéder individuellement à ces éléments de la paire. Si vous ne connaissez pas Tuple (paire), vous pouvez le considérer simplement comme un conteneur qui peut contenir différentes valeurs.

Comment accéder à chaque élément-dans une boucle for pour filtrer les éléments avec la clause where ?

Vous pouvez également utiliserwhereLa clause filtre le contenu de la boucle for

for value in "I♥Swift!" where value != "!" {
	print(value) //删除感叹号
}

运行该程序时,输出为:

I
♥
S
w
i
f
t

在上面的程序中,要迭代的序列是字符串(字符集合)。

value 设置为字符串的第一个字符,并使用where条件进行检查。如果条件返回true,则执行循环内的块(打印语句),该块在控制台输出“ I”。

语句执行后,value 将更新为字符串的下一个字符,然后再次检查条件。如果条件返回 false,则不执行该块,value 并更新为下一个字符。

该过程一直持续到访问字符串的最后一个字符为止。

使用for-在循环执行步骤进行过滤
迭代valuevalue != “!”输出
1ItrueI
2true
3StrueS
4wtruew
5itruei
6ftruef
7ttruet
8!false