Menu
Coddy logo textTech

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"]
challenge icon

Aufgabe

Einfach

Lies 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:

  1. Die Celsius-Temperaturen, verbunden mit ,
  2. 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=-17

Spickzettel

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 ";"
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Kontrollfluss