0Pricing
Swift Academy · Lektion

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 nil zurü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

  1. Sequence-/Collection-Hierarchien
  2. Map/Filter/Reduce, Lazy-Sequences
  3. Benutzerdefinierte Iteratoren und Performance-Tipps
← Zurück zu Swift Academy