Итератор 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Попробуйте сами
# Прочитать целые числа, разделенные запятыми
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Преобразование типовИтоги — Калькулятор возрастаИтоги — Истина или ложьПотренируйтесь самостоятельно: Онлайн-компилятор Ruby