Podstawy domknięć
Część sekcji Logika i przepływ programu ścieżki Swift w Coddy. Lekcja 38 z 56.
Domknięcie to samodzielny blok kodu, który możesz przekazywać i wywoływać później. Pełna składnia określa typy parametrów i zwracany typ:
let double = { (n: Int) -> Int in
return n * 2
}
print(double(5)) // 10Swift może wywnioskować typy, gdy kontekst jest jasny, więc rzadko zapisujesz je w długiej formie. Wewnątrz map, filter itd. standardem jest krótsza składnia skrócona:
let nums = [1, 2, 3, 4]
let doubled = nums.map { n in n * 2 }
let alsoDoubled = nums.map { $0 * 2 } // najkrótsza wersja, $0 to pierwszy argumentDomknięcia są wartościami — możesz przechowywać je w zmiennych, zwracać z funkcji i przekazywać jako argumenty. Właśnie dlatego map działa.
Wyzwanie
ŁatwyWczytaj dwa wiersze danych wejściowych:
- Liczbę całkowitą
x - Rozdzieloną przecinkami listę liczb całkowitych
Zdefiniuj trzy domknięcia, każde typu (Int) -> Int:
addXdodajexdo argumentusquarezwraca kwadrat argumentunegatezwraca argument z przeciwnym znakiem
Zastosuj każde domknięcie do każdego elementu listy za pomocą map. Wypisz trzy wiersze, po jednym dla każdego domknięcia, z wynikami połączonymi za pomocą ,:
addX: ...
square: ...
negate: ...Dla danych wejściowych 10 w wierszu 1 i 1,2,3 w wierszu 2 wynikiem jest:
addX: 11,12,13
square: 1,4,9
negate: -1,-2,-3Spróbuj swoich sił
let x = Int(readLine()!)!
let nums = readLine()!.components(separatedBy: ",").map { Int($0)! }
// TODO: zdefiniuj trzy domknięcia (Int) -> Int i zastosuj każde z nich do nums za pomocą map
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