Чем отличается энумератор map от each?
Этот вопрос проверяет знание двух популярных методов перебора коллекций в Ruby и их различных целей.
Короткий ответ
each проходит по каждому элементу коллекции и выполняет заданное действие, но ничего не возвращает. map создаёт новую коллекцию, преобразовывая каждый элемент по заданному правилу.
Длинный ответ
each:
Метод each перебирает элементы коллекции (массив, хэш и т.д.), передавая их в блок. Он возвращает оригинальную коллекцию, а не результат работы блока:
[1, 2, 3].each { |num| puts num } # Выводит 1, 2, 3
# Возвращает [1, 2, 3]
map:
Метод map используется для преобразования коллекции. Он применяет блок к каждому элементу и возвращает новый массив с результатами:
doubled = [1, 2, 3].map { |num| num * 2 }
puts doubled # => [2, 4, 6] Если вам нужно преобразовать коллекцию, map предпочтительнее, так как он возвращает новую коллекцию.
Ключевое различие: each применяется, когда вы просто хотите выполнить действие для каждого элемента, а map — когда нужно создать новую коллекцию.
Используйте each для операций без изменений коллекции, а map — для преобразования данных