Map
Teil des Abschnitts Logik & Kontrollfluss der Swift-Journey von Coddy — Lektion 23 von 56.
map nimmt einen Closure entgegen und wendet ihn auf jedes Element an, wobei ein neues Array mit den Ergebnissen zurückgegeben wird. Das neue Array hat die gleiche Länge wie die Quelle.
let nums = [1, 2, 3, 4]
let doubled = nums.map { $0 * 2 }
print(doubled) // [2, 4, 6, 8]$0 ist die Kurzschreibweise für den ersten Parameter des Closures. Die längere Form schreibt den Parameternamen und den Rückgabetyp explizit aus:
let doubled = nums.map { (n: Int) -> Int in
return n * 2
}map kann auch den Elementtyp ändern. Das Mapping eines [Int] durch einen Closure, der einen String zurückgibt, ergibt ein [String]:
let labels = nums.map { "#\($0)" }
print(labels) // ["#1", "#2", "#3", "#4"]Aufgabe
EinfachLies eine einzelne Eingabezeile ein: eine durch Kommata getrennte Liste von Ganzzahlen (Temperaturen in Fahrenheit).
Konvertiere jede einzelne in Celsius unter Verwendung der Formel C = (F - 32) * 5 / 9 in Ganzzahlarithmetik (Rundung gegen Null, keine Dezimalstellen). Gib folgendes in separaten Zeilen aus:
- Die Celsius-Temperaturen, verbunden mit
, - Eine Beschriftung pro Temperatur mit dem Präfix
F=<f> C=<c>, verbunden mit;
Verwende map für beide Zeilen.
Für die Eingabe 32,212,98,0 lautet die Ausgabe:
0,100,36,-17
F=32 C=0;F=212 C=100;F=98 C=36;F=0 C=-17Spickzettel
map wendet ein Closure auf jedes Element an und gibt ein neues Array derselben Länge zurück:
let nums = [1, 2, 3, 4]
let doubled = nums.map { $0 * 2 } // [2, 4, 6, 8]$0 ist die Kurzschreibweise für den ersten Parameter des Closures. Explizite Form:
let doubled = nums.map { (n: Int) -> Int in
return n * 2
}map kann den Elementtyp ändern (z. B. [Int] → [String]):
let labels = nums.map { "#\($0)" } // ["#1", "#2", "#3", "#4"]Probier es selbst
let f = readLine()!.components(separatedBy: ",").map { Int($0)! }
// TODO: Zeile 1 = Celsius verbunden mit ","
// TODO: Zeile 2 = Bezeichnungen "F=<f> C=<c>" verbunden mit ";"
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 TrimmenSuchen in StringsTeilen und ZusammenfügenTeilstrings ersetzenWiederholung – Benutzernamen-Check4Mengen
Mengen erstellenVereinigung und SchnittmengeDifferenz und symmetrische DifferenzTeilmenge und ObermengeRückblick – Tag-Filter7Projekt - Habit Tracker
ProjektübersichtAls erledigt markieren2Bereiche & Schrittweiten
Geschlossen vs. halboffenSchrittweiteRange-MethodenRanges in SwitchRückblick – Kalender-Grid5Funktionen höherer Ordnung Teil 1
MapFilterReduceVerkettung von map, filter, reduceRückblick – Wortstatistiken