Menu
Coddy logo textTech

Итератор 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 остается внутри блока, делая ваш код чище и менее подверженным неожиданному поведению.

challenge icon

Задание

Легко

Прочитайте одну строку ввода, содержащую целые числа, разделенные запятыми (например, 4,7,2,9,5).

Разделите входные данные на массив целых чисел, а затем используйте итератор each, чтобы:

  1. Вывести каждое число, умноженное на 3, на отдельной строке
  2. Вычислить сумму всех чисел и вывести ее после завершения цикла

Используйте переменную, инициализированную значением 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}"
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы

Потренируйтесь самостоятельно: Онлайн-компилятор Ruby