Benutzerdefinierte Iteratoren und Performance-Tipps
Implementieren Sie benutzerdefinierte Iteratoren und Sequences und halten Sie sie effizient: einstufiges Durchlaufen, Vermeidung zusätzlicher Allokationen und Verwendung von Lazy-Ansichten.
Benutzerdefinierte Iteratoren und Performance-Tipps ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 3. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Swift Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Swift Academy-Kurs umfasst insgesamt 3 Lektionen.
Benutzerdefinierte Iteratoren 101
Erstellen Sie Ihr eigenes IteratorProtocol und Ihre eigene Sequence. Iteratoren durchlaufen Daten normalerweise in einem einzigen Durchlauf und müssen am Ende nil zurückgeben.
Beispiel für IteratorProtocol
Implementieren Sie next(), um pro Aufruf ein Element zu liefern, den Zustand weiterzuschalten und am Ende nil zurückzugeben.
struct CountdownIterator: IteratorProtocol {
var current: Int
mutating func next() -> Int? {
guard current >= 0 else { return nil }
defer { current -= 1 } // advance state
return current
}
}
var it = CountdownIterator(current: 3)
while let n = it.next() { print(n, terminator: " ") } // 3 2 1 0
print("")Sequence-Wrapper
Eine Sequence stellt makeIterator() bereit. Nun können Sie for-in, map, filter usw. verwenden.
struct Countdown: Sequence {
let start: Int
func makeIterator() -> CountdownIterator {
CountdownIterator(current: start)
}
}
for n in Countdown(start: 5) {
print(n, terminator: " ") // 5 4 3 2 1 0
}
print("")AnyIterator als Abkürzung
AnyIterator/AnySequence ermöglichen es Ihnen, Iteratoren schnell mit einem Closure zu erstellen – praktisch für einfache Generatoren.
// Build an iterator from a closure
var i = 1
let anyIt = AnyIterator<Int> {
guard i <= 3 else { return nil }
defer { i += 1 }
return i * 10
}
let numbers = AnySequence(anyIt)
for x in numbers { print(x, terminator: " ") } // 10 20 30
print("")Mit Lazy-Verarbeitung Arbeit sparen
Bevorzugen Sie .lazy, wenn nur ein Teil einer Pipeline benötigt wird; dadurch sparen Sie Speicherzuweisungen und Rechenaufwand.
let big = Array(1...10_000)
// Eager: builds two intermediate arrays
let eager = big.map { $0 * 2 }.filter { $0 % 3 == 0 }
// Lazy: no temporaries; work is done during collection
let lazyView = big.lazy.map { $0 * 2 }.filter { $0 % 3 == 0 }
let result = Array(lazyView.prefix(5)) // only first 5 actually computed
print(result)Performance-Tipps
Tipps:
- Halten Sie Iteratoren einfach: Zustand weiterschalten und am Ende
nilzurückgeben. - Verwenden Sie .lazy, um Zwischenarrays zu vermeiden.
- Reservieren Sie Kapazität für Ergebnisse, wenn Sie die Größe kennen (
res.reserveCapacity(n)). - Bevorzugen Sie Collection-Algorithmen, wenn Sie mehrere Durchläufe oder Indizes benötigen.
Iterator-Regel
Kurztest: Was muss next() am Ende der Iteration tun?
Zusammenfassung
Zusammenfassung: Schreiben Sie ein minimales IteratorProtocol, umhüllen Sie es in einer Sequence und halten Sie Pipelines mit .lazy sowie, wenn möglich, Vorabreservierung effizient.
Häufig gestellte Fragen
Ist die Lektion „Benutzerdefinierte Iteratoren und Performance-Tipps“ kostenlos?
Ja — der vollständige Text von „Benutzerdefinierte Iteratoren und Performance-Tipps“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Swift Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Swift Academy-Kurs umfasst insgesamt 3 Lektionen.
Was lerne ich in „Benutzerdefinierte Iteratoren und Performance-Tipps“?
Implementieren Sie benutzerdefinierte Iteratoren und Sequences und halten Sie sie effizient: einstufiges Durchlaufen, Vermeidung zusätzlicher Allokationen und Verwendung von Lazy-Ansichten. Du übst Swift Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Swift Academy zu starten?
Keine Vorkenntnisse erforderlich. Swift Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 3.
Wie lange dauert die Lektion „Benutzerdefinierte Iteratoren und Performance-Tipps“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Swift Academy-Lektion Code schreiben und ausführen?
Ja. Jede Swift Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Sequence-/Collection-Hierarchien
- Map/Filter/Reduce, Lazy-Sequences
- Benutzerdefinierte Iteratoren und Performance-Tipps