do..end a nawiasy klamrowe
Część sekcji Logika i przepływ programu ścieżki Ruby w Coddy. Lekcja 16 z 56.
Ruby oferuje dwa sposoby zapisu bloku. Oznaczają to samo, ale każdy z nich ma swoje preferowane zastosowanie.
do...end służy do tworzenia wieloliniowych bloków:
[1, 2, 3].each do |n|
doubled = n * 2
puts "#{n} -> #{doubled}"
endNawiasy klamrowe { ... } służą do jednowierszowych bloków, krótkich i mających postać wyrażenia:
[1, 2, 3].each { |n| puts n * 2 }Te dwa zapisy mają nieco inny priorytet, ale zasada, którą warto zapamiętać, dotyczy stylu: nawiasy klamrowe dla jednolinijkowych instrukcji, do...end dla wielolinijkowych.
Obie formy mogą zwracać wartość. Ostatnie wyrażenie bloku jest tym, co zostaje przekazane z powrotem metodom takim jak map:
[1, 2, 3].map { |n| n * 10 } # [10, 20, 30]
[1, 2, 3].map do |n|
n * 10
end # [10, 20, 30]Wyzwanie
ŁatwyOdczytaj z wejścia listę liczb całkowitych oddzielonych przecinkami. Wypisz dwa wiersze:
- Każdą liczbę pomnożoną przez 2, połączone
,. Użyj klamrowej formymap. - Ciąg
"<n> squared is <n*n>"dla każdej liczby, po jednym w wierszu. Użyj formydo...endmetodyeach.
Dla wejścia 1,2,3 wynikiem jest:
2, 4, 6
1 squared is 1
2 squared is 4
3 squared is 9Spróbuj swoich sił
numbers = gets.chomp.split(",").map(&:to_i)
# TODO: wiersz 1, podwojone wartości, forma map z nawiasami klamrowymi, połączone za pomocą ", "
# TODO: wiersze 2..n, kwadraty liczb, forma each z do...end
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