Inline if / unless
Część sekcji Logika i przepływ programu ścieżki Ruby w Coddy. Lekcja 41 z 56.
Ruby pozwala umieścić if i unless na końcu pojedynczej instrukcji jako jednoliniowy modyfikator. Czyta się to niemal jak tekst po angielsku.
puts "Adult" if age >= 18
puts "Save your work" unless savedTo jest to samo co:
if age >= 18
puts "Adult"
end
unless saved
puts "Save your work"
endZapis inline sprawdza się przy warunkach ochronnych na początku metody lub przy jednorazowych aktualizacjach warunkowych wewnątrz pętli:
return if name.nil? || name.empty?
counts = Hash.new(0)
words.each do |w|
counts[w] += 1 unless w.start_with?("#")
endPodobnie jak w przypadku operatora warunkowego, używaj modyfikatorów w jednej linii w krótkich instrukcjach. Jeśli ciało instrukcji miałoby więcej niż jedną linię, napisz zamiast tego prawdziwy blok if.
Wyzwanie
ŁatwyWczytaj listę liczb całkowitych rozdzielonych przecinkami. Dla każdej liczby wypisz jeden wiersz, ale tylko wtedy, gdy liczba jest różna od zera:
- Wypisz
positive: <n>jeślin > 0 - Wypisz
negative: <n>chyba żen >= 0
Oba wiersze muszą używać formy modyfikatora inline (bez bloku if i bez else). Po pętli wypisz Skipped zeros: <count>, gdzie liczba oznacza liczbę zer, również obliczoną bez bloku if (użyj count).
Dla wejścia 3,-2,0,5,0 wynikiem jest:
positive: 3
negative: -2
positive: 5
Skipped zeros: 2Spróbuj swoich sił
numbers = gets.chomp.split(",").map(&:to_i)
# TODO: wypisz każdą liczbę, używając jednolinijkowego `if` / `unless`
# TODO: wypisz Skipped zeros: <n>, używając count
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