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

Swift für-in 循环

In diesem Artikel werden Sie lernen, was "for"-in-Zyklus mit Beispielen und Varianten.

for-in-Zyklus, um eine Gruppe von Aufgaben in einer festgelegten Zeit auszuführen. Diese Zyklen durchlaufen jede Sequenz, z.B. Elemente in einem Array, Reichweiten oder Zeichen in einer Zeichenkette.

Wir verwenden auch-Der "for"-Zyklus führt einige wiederholte Prozesse in einer festgelegten Zeit aus.

Warum "for"-in-Zyklus?

Stellen Sie sich vor, jemand sagt Ihnen, dass Sie ein Programm schreiben sollen, um "Hallo, Welt!" auf dem Bildschirm auszugeben! Ihre Lösung wäre:

print("Hallo, Welt!")

Wenn sie sich ändern und Ihnen sagen, dass Sie ein Programm schreiben sollen, das "Hallo, Welt!" auf dem Bildschirm fünf Mal anzeigt, was dann? Ohne Wissen über den Zyklus könnte Ihre Lösung sein:

print("Hallo, Welt!")
print("Hallo, Welt!")
print("Hallo, Welt!")
print("Hallo, Welt!")
print("Hallo, Welt!")

Nun, es dauert viel Zeit, fünf gleiche Codezeilen zu schreiben, um dasselbe zu tun. Wenn jemand Sie bittet, ein Programm zu schreiben, das "Hallo, Welt!" auf dem Bildschirm hundert- oder sogar Millionen Male ausgibt? Was werden Sie tun?

Eine naive Lösung wäre es, Anweisungen zu schreiben, die die gegebene Anzahl von Malen ausgeführt werden. Klingt das verrückt? Aber durch die Verwendung von for-Einige Zeilen des "for"-Zyklus, die eine bessere Lösung bieten können:

for i in 1...100 {
	//Hallo Welt auf dem Bildschirm ausgeben 100-mal
	print("Hallo, Welt!")
}

Machen Sie sich keine Sorgen um die Syntax, wir werden sie unten erörtern.

For-in-Zyklus-Syntax

Sie können in Swift einen "for in"-Zyklus wie folgt erstellen:

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

Dieser Zyklus durchläuft einen Bereich, und wir können jeden Element aus dem Bereich im Variablen <value> abrufen. Wenn Sie die Reichweite nicht verstehen, können Sie den folgenden Artikel überprüfen:Swift Reichweiten.

Wie funktioniert das?

  • Die zu iterierende Sequenz ist ein <range>.

  • Setzt <value> auf die erste Zahl in der Reichweite und führt den im Zyklus ausgeführten Satz < Einige Arbeiten >

  • Nach Ausführung des Satzes wird <value> aktualisiert, um den zweiten Wert in <range> zu enthalten, und der Satz <Einige Arbeiten> wird erneut ausgeführt.

  • Dieser Prozess dauert bis zum Erreichen des Endpunkts der Reichweite und beendet den Zyklus.

示例1:for-Wie der "for"-Zyklus in Swift funktioniert

for i in 1...3 .
	print("Hallo Welt!. Wert ist (\(i))")
}

运行该程序时,输出为:

Hallo Welt!. Wert ist 1
Hallo Welt!. Wert ist 2
Hallo Welt!. Wert ist 3

In dem obigen Programm ist der Bereich der zu iterierenden Sequenz1(.. <),daher ist der Bereich der zu durchlaufenden Sequenz3.

Wert von i auf die Reichweite (1. Der erste Zahl im Klammer, und wird in jeder Iteration auf die nächste Zahl in der Reichweite aktualisiert. Dieser Prozess dauert bis zur Reichweite (3. Beendigung der Klammer.

Schritte im Zyklus ausführen
迭代

Wert, der von der Reichweite (i) zurückgegeben wird

输出
11Hallo Welt!. Wert ist 1
22Hallo Welt!. Wert ist 2
33Hallo Welt!. Wert ist 3

in for-Verwerfen von Bereichswerten in der Schleife

Wenn im Schleifendurchlauf keine Bereichswerte verwendet werden, kann im Swift (Unterstrich _) verworfen werden, wie folgt:

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

示例2in for-Verwerfen von Bereichswerten in der Schleife

//In diesem Beispiel werden Werte ignoriert und der halboffene Bereichsoperator verwendet
for _ in 1..<3 .
	{
}

运行该程序时,输出为:

print("Hello world!")
print("Hello world!")

Hello world!Im obigen Programm wird aufgrund der Verwendunghalb offener Bereichsoperator1(.. <),daher ist der Bereich der zu durchlaufenden Sequenz2bis1) einschließlich des unteren Schwellenwerts (3) nicht einschließlich des obere Schwellenwerts (

Unterstrich _ ignoriert den Bereich (1) Werte und führen Sie den print-Ausdruck aus. Rufen Sie erneut den print-Ausdruck auf, um die nächste Iteration durchzuführen, und der Prozess endet, weil2ist der letzte Wert im Bereich.

ohne Wertbereich-in der Schleife ausführen
迭代von den aus dem Bereich zurückgegebenen Werten输出
1VerwerfenHello world!
2VerwerfenHello world!

Verwenden Sie fixed-intervall-for-in der Schleife

Um sicherzustellen, dass die Schleife in jeder Iteration um einen festen Wert (statt eines Bereichs) zunimmt, muss die stride-Methode verwendet werden.

示例3:Verwenden Sie stride-for-in der Schleife

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

运行该程序时,输出为:

1
3
5
7
9

In dem obigen Programm gibt die stride-Funktion die Zahlenfolge zurück:1、3、5、7、9.

i wird auf den Wert der Sequenz (1) dem ersten Zahl, und führen Sie den print-Ausdruck in der Schleife aus, der im Konsolenfenster " 1".

Nach Ausführung dieses Ausdrucks wird der Wert von i auf einen anderen Wert aktualisiert (3) und rufen Sie erneut den print-Ausdruck auf. Dieser Prozess wird fortgesetzt, bis alle Elemente der Sequenz erreicht sind.

Verwenden Sie stride, um den Schritt in der Schleife auszuführen
WertBedingung (Wert < Ende)i (Ausgabe)
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

Wie verwendet man den For-in der Schleife die Elemente der Sammlung zu durchlaufen?

Angenommen, Sie haben eine Zeichenfolgen-Array, wie folgt. Wenn Sie die Arrays nicht verstehen, können Sie sie als einen einzigen Behälter betrachten, der mehrere Werte speichern kann. Für detaillierte Erklärungen sieheSwift-Array.

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

Wie soll man vorgehen, wenn jemand Ihnen sagt, alle Programmiersprachen auszugeben?

Eine Methode besteht darin, den Indexwert programmingLanguages[0], programmingLanguages[1]... um diese Elemente abzurufen, und so weiter, bis alle Elemente abgerufen wurden. Dies ist jedoch sehr umständlich.

Also ist der Zyklus nützlich. Sie können den For-in-Zyklus verwenden, um zu iterieren:

示例4:Verwenden Sie den For-in der Schleife die Elemente des Arrays (Sammlung) aufrufen

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

运行该程序时,输出为:

Swift
Java
Go
JavaScript
Kotlin
Python

Im obigen Programm ist die zu durchlaufende Sequenz ein String-Array.

Der Wert von "language" wird auf das erste Element des Arrays gesetzt und der im Schleifenausschnitt ausgeführte print-Befehl gibt im Konsolenfenster "Swift" aus.

Nach dem Ausführen des Satzes wird der Wert von "language" auf das nächste Element des Arrays aktualisiert und der print-Befehl wird erneut aufgerufen. Dies geschieht bis zum letzten Element des Arrays.

示例5:Verwenden Sie den For-in der Schleife die Elemente des Strings (Sammlung) aufrufen

Da in SwiftStringist auch eine Sammlung, daher können Sie den For-Zyklus verwenden, um jeden Buchstaben im String zu durchlaufen.

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

运行该程序时,输出为:

I
♥
S
w
i
f
t
!

Wie verwendet man den For-in der Schleife den Index der Sammlung aufrufen?

Wenn Sie den Index des Arrays (die Position des Elements im Array, d.h. 0,1、2),dann müssen Sie die Methode "enumerated" verwenden:

示例6:Verwenden Sie den For-in der Schleife den Index des Arrays aufrufen

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

Hier gibt die Methode "enum" für jedes Element des Arrays ein Paar aus Index (Int) und Wert (String) zurück (Int, String). Zum Beispiel: (0,Swift), (1,Java)

Verwenden Sie den For-in Schleife jeden Eintrag dieser Tuples (Ketten) durchlaufen? Wenn Sie die Tuples (Ketten) nicht kennen, können Sie sie einfach als Behälter betrachten, die verschiedene Arten von Werten enthalten können.

Wie kann man in der For-in der For-Schleife die Elemente mit der where-Bedingung filtern?

Sie können auchwhereDer For-Loop-Inhalt wird durch die Bedingung gefiltert

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