Iterator each
Część sekcji Podstawy ścieżki Ruby w Coddy. Lekcja 65 z 88.
Ruby zapewnia bardziej elegancki sposób iterowania po tablicach niż używanie pętli for lub while. Iterator each to preferowany w Ruby sposób przetwarzania każdego elementu kolekcji.
Oto podstawowa składnia:
fruits = ["apple", "banana", "cherry"]
fruits.each do |fruit|
puts fruit
endTo wyświetla każdy owoc w osobnym wierszu. Zmienna między pionowymi kreskami (|fruit|) nazywa się zmienną blokową. Tymczasowo przechowuje każdy element, gdy iterator przechodzi przez tablicę.
W przypadku bloków jednowierszowych możesz użyć nawiasów klamrowych zamiast do...end:
numbers = [1, 2, 3]
numbers.each { |n| puts n * 2 }Metoda each jest potężna, ponieważ możesz wykonać dowolną operację na każdym elemencie. Oto przykład, który oblicza sumę narastającą:
prices = [10, 25, 15]
total = 0
prices.each do |price|
total += price
end
puts total # Wyświetla: 50W przeciwieństwie do pętli for, zmienna blokowa w each pozostaje w obrębie bloku, dzięki czemu kod jest czytelniejszy i mniej podatny na nieoczekiwane zachowanie.
Wyzwanie
ŁatwyWczytaj jeden wiersz danych wejściowych zawierający liczby całkowite oddzielone przecinkami (np. 4,7,2,9,5).
Podziel dane wejściowe na tablicę liczb całkowitych, a następnie użyj iteratora each, aby:
- Wypisać każdą liczbę pomnożoną przez 3 w osobnym wierszu
- Obliczyć sumę wszystkich liczb i wypisać ją po pętli
Przed pętlą zainicjuj zmienną wartością 0, aby gromadzić sumę podczas iterowania po tablicy.
Na przykład, jeśli dane wejściowe to 4,7,2,9,5, wynik powinien być następujący:
12
21
6
27
15
Sum: 27Jeśli dane wejściowe to 10,20,30, wynik powinien być następujący:
30
60
90
Sum: 60Jeśli dane wejściowe to 1,2,3,4, wynik powinien być następujący:
3
6
9
12
Sum: 10Jeśli dane wejściowe to 5, wynik powinien być następujący:
15
Sum: 5Spróbuj swoich sił
# Wczytaj liczby całkowite rozdzielone przecinkami
input = gets.chomp
# Podziel dane wejściowe na tablicę liczb całkowitych
numbers = input.split(",").map(&:to_i)
# Zainicjalizuj zmienną sum
sum = 0
# TODO: Napisz swój kod poniżej
# Użyj iteratora each, aby:
# 1. Wypisać każdą liczbę pomnożoną przez 3
# 2. Dodać każdą liczbę do zmiennej sum
# Wypisz końcową sumę
puts "Sum: #{sum}"Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
4Operatory — część 2
Operatory logiczne — część 1Operatory logiczne — część 2Powtórka — podstawy logikiOperatory logiczne — część 3Operatory logiczne — część 47Kalkulator podziału rachunku
Wiadomość powitalnaPobieranie danych od użytkownika2Zmienne i typy danych
Liczby i zmienneTyp danych StringTyp danych BooleanTyp danych SymbolSprawdzanie typów danychKonwencje nazewnictwaPodsumowanie — tworzenie zmiennych5Podejmowanie decyzji
Instrukcja ifIf - elsePowtórka — prosty kalkulatorZagnieżdżone if - elseInstrukcja unless8Pętle
Pętla for z zakresamiPętla whilebreaknextPowtórka – silniaPętla timesPętla untilPętle zagnieżdżonePowtórka – dynamiczne wejście3Operatory — część 1
Operatory arytmetyczneOperator moduloSkrócone operatory arytmetycznePodsumowanie — prosta matematykaOperatory porównania6Podstawowe wejście i wyjście
Wyświetlanie za pomocą putsWyświetlanie za pomocą print i pWyświetlanie zmiennychWczytywanie za pomocą getsMetoda chompKonwersja typówPodsumowanie – kalkulator wiekuPodsumowanie – prawda czy fałszPoćwicz samodzielnie: Kompilator Ruby online