Как я изменяю массив, в то время как я выполняю итерации по нему в Ruby?

У Очереди ACM есть некоторый хардкор, довольный, плотный, но хороший. Я не считал его в некоторое время все же.

82
задан Chris Barlow 28 February 2012 в 21:08
поделиться

2 ответа

Используйте карту , чтобы создать новый массив из старого:

arr2 = arr.map {|item| item * 3}

Используйте карту! , чтобы изменить массив на месте:

arr.map! {|item| item * 3}

Посмотрите, как это работает в Интернете: ideone

129
ответ дан 24 November 2019 в 09:14
поделиться

Чтобы напрямую изменить массив, используйте arr.map! {| item | товар * 3} . Чтобы создать новый массив на основе оригинала (что часто предпочтительнее), используйте arr.map {| item | товар * 3} . На самом деле, я всегда дважды думаю, прежде чем использовать каждый , потому что обычно есть функция более высокого порядка, такая как map , select или inject , которые делает то, что хочу.

17
ответ дан 24 November 2019 в 09:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: