Select i Reject
Część sekcji Logika i przepływ programu ścieżki Ruby w Coddy. Lekcja 21 z 56.
Metoda select zwraca nową tablicę zawierającą tylko te elementy, dla których blok zwraca wartość prawdziwą. Tak Ruby zapisuje „filtrowanie”.
numbers = [1, 2, 3, 4, 5, 6]
evens = numbers.select { |n| n.even? }
puts evens.inspect # [2, 4, 6]reject działa odwrotnie — pozostawia wszystko, dla czego blok zwraca false:
odds = numbers.reject { |n| n.even? }
puts odds.inspect # [1, 3, 5]Obie zwracają nową tablicę; oryginał pozostaje nietknięty.
Blok to po prostu predykat — zadziała wszystko, co daje wartość true lub false:
words = ["hi", "hello", "hey", "yo"]
long = words.select { |w| w.length >= 3 }
puts long.inspect # ["hello", "hey"]Wyzwanie
PoczątkującyWczytaj listę liczb całkowitych oddzielonych przecinkami. Wypisz dwa wiersze:
- Liczby większe niż
10(użyjselect), połączone za pomocą, - Liczby niedpodzielne przez
3(użyjreject), połączone za pomocą,
Dla danych wejściowych 3,7,12,15,20 wynikiem jest:
12, 15, 20
7, 20Spróbuj swoich sił
numbers = gets.chomp.split(",").map(&:to_i)
# TODO: wiersz 1, liczby > 10, połączone za pomocą ", "
# TODO: wiersz 2, liczby NIEpodzielne przez 3, połączone za pomocą ", "
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
1Łańcuchy znaków w szczegółach
Przegląd metod łańcuchów znakówInterpolacja łańcuchów znakówIterowanie po łańcuchach znakówDzielenie i łączeniePowtórka – Tkacz łańcuchów znaków4Bloki, procki i lambdy
Czym jest blok?do..end a nawiasy klamroweSłowo kluczowe yieldParametry blokuProcki i lambdyPodsumowanie — własny iterator7Hashe, część 2
Hash.new z wartościami domyślnymiIterowanie po haszachZagnieżdżone haszeŁączenie i przekształcaniePowtórka — licznik częstotliwości10Projekt – ewidencja uczniów
Przegląd projektuDodawanie ucznia5Potęga Enumerable
Select i RejectŁączenie wywołań mapReduce / Injectcount, all?, any?, none?group_by i partitionsort_by, min_by, max_byPodsumowanie — potok danych8Zaawansowane podejmowanie decyzji
case z klasami i wyrażeniami regularnymiwhen z wieloma wartościamiOperator trójargumentowyInline if / unlessPowtórka – klasyfikator ocenPoćwicz samodzielnie: Kompilator Ruby online