0Pricing
Swift Academy · Lektion

map und compactMap

Transformieren Sie Elemente und entfernen Sie nil-Werte.

map und compactMap ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 1 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.

Was ist map?

map ist eine Funktion höherer Ordnung: Sie nimmt eine Closure entgegen, wendet sie auf jedes Element einer Sequenz an und gibt ein neues Array mit den transformierten Ergebnissen zurück.

  • Die ursprüngliche Collection wird niemals verändert
  • Die Anzahl der Ergebnisse entspricht immer der Anzahl der Eingaben
  • Der Elementtyp kann sich ändern, zum Beispiel von Int zu String

Ein einfaches map

Jede Zahl in einem Array verdoppeln:

let numbers = [1, 2, 3, 4]
let doubled = numbers.map { $0 * 2 }
print(doubled)  // [2, 4, 6, 8]

Den Elementtyp ändern

map kann Int-Werte in String-Werte umwandeln:

let ids = [10, 20, 30]
let labels = ids.map { "ID-\($0)" }
print(labels)  // ["ID-10", "ID-20", "ID-30"]

map mit einer benannten Funktion

Sie können jede Funktion mit einer passenden Signatur übergeben, nicht nur eine Trailing Closure:

let words = ["swift", "map"]
let upper = words.map { $0.uppercased() }
print(upper)  // ["SWIFT", "MAP"]

Das Problem, das map nicht lösen kann

map behält jedes Element bei. Wenn Ihre Transformation ein Optional zurückgibt, also fehlschlagen kann, erhalten Sie ein Array von Optionals wie [Int?] – voller nil-Lücken, die Sie später herausfiltern müssen.

Genau dieses Problem löst compactMap.

compactMap kommt ins Spiel

compactMap transformiert jedes Element und entfernt jedes Ergebnis, das nil ist. Dadurch wird ein Array ohne Optionals zurückgegeben:

let raw = ["1", "2", "x", "4"]
let nums = raw.compactMap { Int($0) }
print(nums)  // [1, 2, 4]  -- "x" was dropped

map und compactMap im Vergleich

Der Unterschied besteht darin, ob nil-Ergebnisse erhalten bleiben:

let raw = ["1", "x", "3"]
print(raw.map { Int($0) })       // [Optional(1), nil, Optional(3)]
print(raw.compactMap { Int($0) }) // [1, 3]

Optionals in einer Collection entpacken

compactMap ist der idiomatische Weg, um nil-Werte aus einem Array von Optionals zu entfernen:

let maybe: [Int?] = [1, nil, 3, nil, 5]
let clean = maybe.compactMap { $0 }
print(clean)  // [1, 3, 5]

Parsen mit compactMap

Eine häufige Anwendung aus der Praxis: Nur die gültigen Eingabezeilen parsen:

let lines = ["42", "", "hello", "7"]
let values = lines.compactMap { Int($0) }
print(values)      // [42, 7]
print(values.reduce(0, +))  // 49

map und compactMap kombinieren

Sie können sie verketten: Mit map formen Sie die Daten, mit compactMap behalten Sie nur die erfolgreichen Ergebnisse:

let scores = ["90", "85", "n/a", "70"]
let passed = scores
    .compactMap { Int($0) }
    .map { $0 >= 80 ? "pass" : "fail" }
print(passed)  // ["pass", "pass", "fail"]

compactMap bei optionalen Verkettungen

Es funktioniert auch hervorragend mit dem Zugriff auf optionale Eigenschaften:

struct User { let name: String? }
let users = [User(name: "Ann"), User(name: nil), User(name: "Bo")]
let names = users.compactMap { $0.name }
print(names)  // ["Ann", "Bo"]

Kurztest

Welche Funktion transformiert Elemente und entfernt nil-Ergebnisse in einem Schritt?

Zusammenfassung

Sie haben die beiden zentralen Transformationsfunktionen kennengelernt:

  • map – jedes Element transformieren, die Anzahl der Ergebnisse entspricht der Anzahl der Eingaben
  • compactMap – transformieren und nil entfernen, ideal zum Parsen und Entpacken von Optionals
  • Beide geben neue Arrays zurück und verändern die Quelle niemals
  • Verketten Sie sie, um Daten sauber zu formen und anschließend zu filtern

Als Nächstes: Filtern mit Prädikaten.

Häufig gestellte Fragen

Ist die Lektion „map und compactMap“ kostenlos?

Ja — der vollständige Text von „map und compactMap“ 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 „map und compactMap“?

Transformieren Sie Elemente und entfernen Sie nil-Werte. 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 1 von 4.

Wie lange dauert die Lektion „map und compactMap“?

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. map und compactMap
  2. filter und Prädikate
  3. reduce und reduce(into:)
  4. flatMap und Verkettung
← Zurück zu Swift Academy