Filter
Część sekcji Logika i przepływ programu ścieżki Swift w Coddy. Lekcja 24 z 56.
filter przyjmuje domknięcie predykatowe i zwraca nową tablicę zawierającą tylko te elementy, dla których domknięcie zwróciło true.
let nums = [1, 2, 3, 4, 5, 6]
let evens = nums.filter { $0 % 2 == 0 }
print(evens) // [2, 4, 6]Wynik zachowuje pierwotną kolejność. Typ wyniku jest zgodny z typem wejściowym, nie zachodzi żadna transformacja, następuje jedynie wybór.
filter naturalnie łączy się z map:
let big = nums
.filter { $0 > 2 }
.map { $0 * $0 }
print(big) // [9, 16, 25, 36]Czytaj każdy łańcuch od góry do dołu, tak jak potok. Każdy krok tworzy nową tablicę; nic nie modyfikuje oryginału.
Wyzwanie
ŁatwyWczytaj dwa wiersze danych wejściowych:
- Listę liczb całkowitych rozdzielonych przecinkami
- Liczbę całkowitą
min
Wypisz w osobnych wierszach:
- Liczby całkowite ściśle większe od
min, połączone za pomocą,(lub pusty wiersz, jeśli żadna liczba nie spełnia warunku) - Kwadraty liczb spełniających warunek, połączone za pomocą
, - Liczbę liczb spełniających warunek
Użyj filter + map jako łańcucha. Nie iteruj dwa razy po danych wejściowych.
Dla danych wejściowych 1,5,2,8,3,7 w wierszu 1 i 4 w wierszu 2 wynikiem jest:
5,8,7
25,64,49
3Spróbuj swoich sił
let nums = readLine()!.components(separatedBy: ",").map { Int($0)! }
let min = Int(readLine()!)!
// TODO: przefiltruj wartości > min jednokrotnie, a potem przekształć je w kwadraty; wypisz obie listy, a następnie ich liczbę
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