Menu
Coddy logo textTech

Map

Część sekcji Logika i przepływ programu ścieżki Swift w Coddy. Lekcja 23 z 56.

map przyjmuje domknięcie i stosuje je do każdego elementu, zwracając nową tablicę wyników. Nowa tablica ma taką samą długość jak źródłowa.

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

$0 to skrót oznaczający pierwszy parametr domknięcia. Dłuższa forma określa nazwę parametru i typ zwracany:

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

map może również zmieniać typ elementów. Zmapowanie [Int] za pomocą domknięcia, które zwraca String, daje w wyniku [String]:

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

Wyzwanie

Łatwy

Wczytaj jeden wiersz danych wejściowych: listę liczb całkowitych oddzielonych przecinkami (temperatury w stopniach Fahrenheita).

Przelicz każdą z nich na stopnie Celsjusza, używając wzoru C = (F - 32) * 5 / 9 w arytmetyce całkowitoliczbowej (obcięcie w kierunku zera, bez części dziesiętnej). Wypisz w osobnych wierszach:

  1. Temperatury w stopniach Celsjusza, połączone za pomocą ,
  2. Jedną etykietę dla każdej temperatury z prefiksem F=<f> C=<c>, połączone za pomocą ;

Użyj map w obu wierszach.

Dla danych wejściowych 32,212,98,0 wynikiem jest:

0,100,36,-17
F=32 C=0;F=212 C=100;F=98 C=36;F=0 C=-17

Spróbuj swoich sił

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

// TODO: wiersz 1 = wartości w stopniach Celsjusza połączone znakiem ","
// TODO: wiersz 2 = etykiety "F=<f> C=<c>" połączone znakiem ";"
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Edytor online Swift