如何在Ruby中迭代数组时修改数组?

我只是在学习Ruby的时候很抱歉,如果在这里太新手了,但是我不能从镐书中解决这个问题(可能只是读得不够细致)。 无论如何,如果我有这样一个数组:

arr = [1,2,3,4,5] 

…我想,比方说,将数组中的每个值乘以3,我已经计算出如下:

 arr.each {|item| item *= 3} 

…不会得到我想要的(我明白为什么,我不修改数组本身)。

我没有得到的是如何在迭代器之后从代码块中修改原始数组。 我确定这很容易。

使用map从旧的创build一个新的数组:

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

使用map! 修改数组:

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

看到它在线工作: ideone

要直接修改数组,请使用arr.map! {|item| item*3} arr.map! {|item| item*3} arr.map! {|item| item*3} 。 要创build一个基于原始数组(基于原始数据)的新数组,请使用arr.map {|item| item*3} arr.map {|item| item*3} 。 其实我在使用之前总是三思而后行,因为通常有一个像map这样的高阶函数, selectinject是做我想要的。

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