Czym jest blok?
Część sekcji Logika i przepływ programu ścieżki Ruby w Coddy. Lekcja 15 z 56.
Już wcześniej pisałeś(-aś) bloki. Za każdym razem, gdy pisałeś(-aś) each do |x| ... end, część między do a end była blokiem: fragmentem kodu przekazywanym do metody.
[1, 2, 3].each do |n|
puts n * 2
endTutaj each jest metodą tablicy, a do |n| ... end to blok. each uruchamia blok raz dla każdego elementu, przekazując go jako n.
Bloki nie są osobnymi obiektami przechowywanymi w zmiennych — są bezpośrednio powiązane z wywołaniem metody. Metoda albo otrzymuje blok, albo nie, a większość metod iteracyjnych (each, map, select, times) jest zaprojektowana tak, aby przyjmować blok.
3.times do |i|
puts "hi #{i}"
endWywołanie metody bez bloku zmienia jej działanie. [1,2,3].map bez bloku zwraca enumerator zamiast przekształconej tablicy, więc blok jest częścią znaczenia metody.
Wyzwanie
PoczątkującyWczytaj liczbę całkowitą n z wejścia. Użyj metody times z blokiem, aby wypisać komunikat Iteration <i> dla każdej wartości i od 0 do n - 1.
Dla wejścia 3 wynikiem jest:
Iteration 0
Iteration 1
Iteration 2Spróbuj swoich sił
n = gets.to_i
# TODO: użyj n.times z blokiem, aby wypisać każdą iterację
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