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

Шпаргалка

Итератор 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}"
quiz iconПроверьте себя

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

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