0Pricing
Swift Academy · Lektion

Lazy map und filter

Verketten Sie Lazy-Transformationen ohne Zwischenarrays.

Lazy map und filter ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. 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 4 Lektionen.

Zwischenarrays

Eager-Verkettungen reservieren zwischen jedem Schritt ein neues Array. filter().map() erstellt auf einem großen Array zwei vollständige Arrays, obwohl Sie möglicherweise nur einige wenige Elemente benötigen.

Die eager-Speicherallokation

Hier werden zwei Zwischenarrays erstellt:

let nums = Array(1...6)
let result = nums
    .filter { $0 % 2 == 0 }  // builds [2, 4, 6]
    .map { $0 * 10 }         // builds [20, 40, 60]
print(result)  // [20, 40, 60]

Schritte mit lazy fusionieren

Eine lazy-Verkettung fusioniert die Operationen: Jedes Element durchläuft alle Schritte, bevor das nächste Element beginnt, sodass niemals ein Zwischenarray reserviert wird.

Eine Lazy-Verkettung

Dieselbe Logik, keine Zwischenarrays:

let nums = Array(1...6)
let result = nums.lazy
    .filter { $0 % 2 == 0 }
    .map { $0 * 10 }
print(Array(result))  // [20, 40, 60]

Ablauf von Element zu Element

Die Ablaufverfolgung zeigt eine ineinandergreifende Ausführung statt einer schrittweisen Verarbeitung:

let out = [1, 2, 3].lazy
    .filter { n -> Bool in print("filter \(n)"); return n > 1 }
    .map   { n -> Int  in print("map \(n)");    return n }
print(Array(out))  // filter 1, filter 2, map 2, filter 3, map 3 -> [2, 3]

Früher Abbruch spart Arbeit

Kombinieren Sie eine lazy-Verkettung mit first(where:), um so früh wie möglich abzubrechen:

let nums = Array(1...1_000_000)
let hit = nums.lazy.map { $0 + 1 }.first { $0 > 5 }
print(hit!)  // 6  -- only a handful of elements processed

lazy mit prefix

Nehmen Sie nur die ersten Ergebnisse einer aufwendigen Transformation:

let squares = (1...).lazy.map { $0 * $0 }
print(Array(squares.prefix(5)))  // [1, 4, 9, 16, 25]

Übersprungene Arbeit zählen

Ein Zähler zeigt, wie wenige Elemente tatsächlich verarbeitet werden:

var transforms = 0
let result = Array(1...100).lazy
    .map { (n: Int) -> Int in transforms += 1; return n * 2 }
    .prefix(3)
_ = Array(result)
print(transforms)  // 3, not 100

Lazy compactMap

Auch für compactMap gibt es eine lazy-Variante:

let raw = ["1", "x", "3", "y", "5"]
let first = raw.lazy.compactMap { Int($0) }.first
print(first!)  // 1

Viele Schritte kombinieren

Lange fusionierte Pipelines bleiben bis zur Materialisierung frei von Allokationen:

let r = Array(1...20).lazy
    .filter { $0 % 2 == 0 }
    .map { $0 * $0 }
    .filter { $0 > 50 }
print(Array(r))  // [64, 100, 144, 196, 256, 324, 400]

Wann Fusion am meisten bringt

Lazy-Fusion lohnt sich, wenn die Quelle groß ist und Sie nur einen Teil des Ergebnisses behalten. Wenn Sie ohnehin alles in ein Array materialisieren, fällt die Einsparung geringer aus und eager ist möglicherweise besser lesbar.

let big = Array(1...10_000)
let sample = Array(big.lazy.filter { $0 % 1000 == 0 })
print(sample)  // [1000, 2000, ... 10000]

Kurztest

Was vermeidet eine lazy-filter().map()-Verkettung, die eine eager-Verkettung erstellt?

Zusammenfassung

Sie haben Lazy-Verkettungen kennengelernt:

  • Eager-Verkettungen reservieren zwischen jedem Schritt ein Array
  • .lazy fusioniert die Schritte – Element für Element und ohne Zwischenarrays
  • Es lässt sich perfekt mit first(where:) und prefix für einen frühen Abbruch kombinieren
  • Der größte Vorteil entsteht bei einer großen Quelle und teilweiser Verarbeitung

Als Nächstes: Vor- und Nachteile von lazy und eager.

Häufig gestellte Fragen

Ist die Lektion „Lazy map und filter“ kostenlos?

Ja — der vollständige Text von „Lazy map und filter“ 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 4 Lektionen.

Was lerne ich in „Lazy map und filter“?

Verketten Sie Lazy-Transformationen ohne Zwischenarrays. 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 2 von 4.

Wie lange dauert die Lektion „Lazy map und filter“?

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. Die lazy-Eigenschaft
  2. Lazy map und filter
  3. Lazy und eager im Vergleich
  4. Eigene Lazy-Sequenzen erstellen
← Zurück zu Swift Academy