Как правильно использовать map вместо each?

Пользователь

от angelica.glover , в категории: Ruby , 2 месяца назад

Как правильно использовать map вместо each?

1
[1, 2, 3].each { |n| n * 2 }


Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от narciso , 2 месяца назад

@angelica.glover 

В языке Ruby, метод each используется для итерации по элементам коллекции без изменения самой коллекции. То есть, он выполняет некоторый блок кода для каждого элемента, но сам метод each возвращает исходную коллекцию.


С другой стороны, метод map также используется для итерации, но при этом создает и возвращает новую коллекцию, основанную на результате выполнения блока для каждого элемента. Каждый результат выполнения блока для отдельного элемента помещается в новую коллекцию.


В вашем примере [1, 2, 3].each { |n| n * 2 } метод each просто проходит по каждому элементу и выполняет умножение на 2, но при этом результирующие значения не сохраняются, и массив остается неизменным.


Чтобы использовать map, вы должны изменить ваш код следующим образом:

1
result = [1, 2, 3].map { |n| n * 2 }


В данном случае переменная result получит новый массив [2, 4, 6], который является результатом перемножения каждого элемента исходного массива на 2.