Podsumowanie — własny iterator
Część sekcji Logika i przepływ programu ścieżki Ruby w Coddy. Lekcja 20 z 56.
Utwórz własną metodę iteratora, która używa yield, przyjmuje blok i zwraca przydatną wartość, łącząc wszystko z tego rozdziału.
Wyzwanie
ŚredniZdefiniuj metodę o nazwie each_even, która przyjmuje tablicę numbers i przekazuje każdą parzystą liczbę z tablicy do swojego bloku (całkowicie pomijając nieparzyste liczby).
Następnie wczytaj listę liczb całkowitych oddzielonych przecinkami, wywołaj na niej each_even z blokiem, który wypisuje "Even: <n>" dla każdej przekazanej wartości, a na końcu wypisz:
Done: <count>Gdzie count oznacza liczbę przekazanych liczb parzystych.
Dla wejścia 1,2,3,4,5,6 wynikiem jest:
Even: 2
Even: 4
Even: 6
Done: 3Spróbuj swoich sił
# TODO: zdefiniuj each_even(numbers), która przekazuje do bloku każdą liczbę parzystą
numbers = gets.chomp.split(",").map(&:to_i)
count = 0
# TODO: wywołaj each_even z blokiem, który wypisuje "Even: <n>"
# i zwiększa count dla każdej przekazanej do bloku wartości
puts "Done: #{count}"
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