compactMap
Teil des Abschnitts Logik & Kontrollfluss der Swift-Journey von Coddy. Lektion 28 von 56.
compactMap ist map, wobei die Optionals herausgefiltert werden. Die Closure kann ein Optional zurückgeben; compactMap verwirft die nil-Ergebnisse und entpackt den Rest.
let strings = ["3", "hi", "7", "!", "1"]
let numbers = strings.compactMap { Int($0) }
print(numbers) // [3, 7, 1]Int("hi") gibt nil zurück, da es keine Zahl aus "hi" parsen kann. compactMap sortiert diese automatisch aus und liefert ein sauberes [Int].
Ohne sie würdest du strings.map { Int($0) } schreiben und ein [Int?] mit eingestreuten nil-Werten erhalten und müsstest diese dann selbst herausfiltern. compactMap erledigt beide Schritte in einem.
Aufgabe
EinfachLies eine einzelne Eingabezeile: eine kommagetrennte Mischung aus Ganzzahlen und fehlerhaftem Text (einige Einträge können nicht geparst werden).
Gib Folgendes aus:
- Die Ganzzahlen (in der Reihenfolge der Eingabe), verbunden mit
, - Wie viele Einträge verworfen wurden (nicht geparst werden konnten)
- Die Summe der geparsten Ganzzahlen
Für die Eingabe 3,hi,7,!,1,42,oops ist die Ausgabe:
3,7,1,42
3
53Probier es selbst
let parts = readLine()!.components(separatedBy: ",")
// TODO: compactMap zu ints; joined, Anzahl der verworfenen Elemente, Summe ausgeben
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Kontrollfluss
1Strings im Detail
Zählen und IndizesGroß-/Kleinschreibung und TrimSuchen in StringsAufteilen und ZusammenfügenTeilstrings ersetzenRückblick – Benutzernamen prüfen4Mengen
Mengen erstellenVereinigung und SchnittmengeSubtraktion und symmetrische DifferenzTeilmenge und ObermengeWiederholung – Tag-Filter7Projekt – Gewohnheitstracker
ProjektübersichtAls erledigt markieren2Bereiche & Schrittweiten
Geschlossen vs. halboffenSchrittweiteBereichsmethodenBereiche in SwitchRückblick – Kalender-Raster5Funktionen höherer Ordnung Teil 1
MapFilterReduceVerketten von Map, Filter und ReduceRückblick – Wortstatistik3Wörterbücher
Wörterbücher deklarierenOptionale SucheWörterbücher aktualisierenWörterbücher durchlaufenWerte gruppierenRückblick – Inventar6Funktionen höherer Ordnung Teil 2
compactMapflatMapsorted(by:)Pipelines erstellenRückblick – BestenlisteÜbe selbstständig: Swift-Playground