Menu
Coddy logo textTech

Map

Teil des Abschnitts Logik & Kontrollfluss der Swift-Journey von Coddy. Lektion 23 von 56.

map nimmt eine Closure entgegen und wendet sie auf jedes Element an, wobei ein neues Array mit den Ergebnissen zurückgegeben wird. Das neue Array hat dieselbe 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 eine Kurzform für den ersten Parameter der Closure. Die längere Form schreibt den Parameternamen und den Rückgabetyp aus:

let doubled = nums.map { (n: Int) -> Int in
    return n * 2
}

map kann auch den Elementtyp ändern. Wenn du ein [Int] durch eine Closure abbildest, die String zurückgibt, erhältst du ein [String]:

let labels = nums.map { "#\($0)" }
print(labels)                // ["#1", "#2", "#3", "#4"]
challenge icon

Aufgabe

Einfach

Lies eine einzelne Eingabezeile ein: eine durch Kommas getrennte Liste von Ganzzahlen (Temperaturen in Fahrenheit).

Wandle jede davon mit der Formel C = (F - 32) * 5 / 9 in Ganzzahlarithmetik in Celsius um (gegen null abschneiden, keine Dezimalstellen). Gib in separaten Zeilen Folgendes aus:

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

Probier es selbst

let f = readLine()!.components(separatedBy: ",").map { Int($0)! }

// TODO: Zeile 1 = Celsius verbunden mit ","
// TODO: Zeile 2 = Labels "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

Übe selbstständig: Swift-Playground