Итератор Each
Часть раздела Основы путешествия по Ruby на Coddy — урок 65 из 88.
Ruby предоставляет более элегантный способ перебора массивов, чем использование циклов for или while. Итератор each является предпочтительным для Ruby способом обработки каждого элемента в коллекции.
Вот базовый синтаксис:
fruits = ["apple", "banana", "cherry"]
fruits.each do |fruit|
puts fruit
endЭто выводит каждый фрукт на отдельной строке. Переменная между вертикальными чертами (|fruit|) называется переменной блока. Она временно хранит каждый элемент по мере того, как итератор проходит по массиву.
Для однострочных блоков вы можете использовать фигурные скобки вместо do...end:
numbers = [1, 2, 3]
numbers.each { |n| puts n * 2 }Метод each очень эффективен, так как вы можете выполнять любую операцию над каждым элементом. Вот пример, который вычисляет общую сумму:
prices = [10, 25, 15]
total = 0
prices.each do |price|
total += price
end
puts total # Выводит: 50В отличие от циклов for, переменная блока в each остается внутри блока, делая ваш код чище и менее подверженным неожиданному поведению.
Задание
ЛегкоПрочитайте одну строку ввода, содержащую целые числа, разделенные запятыми (например, 4,7,2,9,5).
Разделите входные данные на массив целых чисел, а затем используйте итератор each, чтобы:
- Вывести каждое число, умноженное на 3, на отдельной строке
- Вычислить сумму всех чисел и вывести ее после завершения цикла
Используйте переменную, инициализированную значением 0 перед циклом, чтобы накапливать сумму во время итерации по массиву.
Например, если на вход подается 4,7,2,9,5, вывод должен быть следующим:
12
21
6
27
15
Sum: 27Если на вход подается 10,20,30, вывод должен быть следующим:
30
60
90
Sum: 60Если на вход подается 1,2,3,4, вывод должен быть следующим:
3
6
9
12
Sum: 10Если на вход подается 5, вывод должен быть следующим:
15
Sum: 5Шпаргалка
Итератор each — это предпочтительный в Ruby способ перебора массивов:
fruits = ["apple", "banana", "cherry"]
fruits.each do |fruit|
puts fruit
endПеременная между вертикальными чертами (|fruit|) — это переменная блока, которая временно хранит каждый элемент.
Для однострочных блоков используйте фигурные скобки:
numbers = [1, 2, 3]
numbers.each { |n| puts n * 2 }Вы можете выполнять операции над каждым элементом, например, вычислять общую сумму:
prices = [10, 25, 15]
total = 0
prices.each do |price|
total += price
end
puts total # Вывод: 50Попробуйте сами
# Прочитать целые числа, разделенные запятыми
input = gets.chomp
# Разделить ввод на массив целых чисел
numbers = input.split(",").map(&:to_i)
# Инициализировать переменную sum
sum = 0
# TODO: Напишите свой код ниже
# Используйте итератор each, чтобы:
# 1. Вывести каждое число, умноженное на 3
# 2. Добавить каждое число в переменную sum
# Вывести итоговую сумму
puts "Sum: #{sum}"В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы. Часть 2
Логические операторы. Часть 1Логические операторы. Часть 2Повторение — простая логикаЛогические операторы. Часть 3Логические операторы. Часть 47Калькулятор разделения счета
Приветственное сообщениеПолучение пользовательского ввода13Продвинутая работа с массивами
Срезы массивов через диапазоныСрезы массивов через индексыОператоры массивовМетод include?2Переменные и типы данных
Числа и переменныеСтроковый тип данныхЛогический тип данныхТип данных SymbolПроверка типов данныхПравила именованияПовторение: создание переменных5Принятие решений
Оператор IfКонструкция If - ElseПовторение — Простой калькуляторВложенные конструкции If - ElseОператор Unless8Циклы
Цикл For с диапазонамиЦикл WhileОператор BreakОператор NextПовторение: ФакториалЦикл TimesЦикл UntilВложенные циклыПовторение: Динамический ввод3Операторы. Часть 1
Арифметические операторыОператор остатка от деленияСокращенная арифметикаИтоги: простая математикаОператоры сравнения6Основы ввода-вывода
Вывод с помощью putsВывод с помощью print и pВывод с переменнымиВвод с помощью getsМетод chompПреобразование типовИтоги — Калькулятор возрастаИтоги — Истина или ложь