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"]Wyzwanie
ŁatwyWczytaj 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:
- Temperatury w stopniach Celsjusza, połączone za pomocą
, - 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=-17Spró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 ";"
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
1Dogłębnie o ciągach znaków
Liczba i indeksyWielkość liter i usuwanie białych znakówWyszukiwanie w ciągach znakówDzielenie i łączenieZastępowanie podciągówPodsumowanie — sprawdzanie nazwy użytkownika4Zbiory
Tworzenie zbiorówSuma i część wspólnaRóżnica i różnica symetrycznaPodzbiór i nadzbiórPowtórka — filtr tagów7Projekt – Śledzenie nawyków
Przegląd projektuOznacz jako wykonane10Projekt — silnik quizów
Przegląd projektuZadawanie pytań2Zakresy i kroki
Zakresy domknięte i półotwarteKrokMetody zakresówZakresy w instrukcji switchPowtórka — siatka kalendarza5Funkcje wyższego rzędu, część 1
MapFilterReduceŁączenie map, filter i reducePodsumowanie – statystyki słówPoćwicz samodzielnie: Edytor online Swift