如何在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
这样的高阶函数, select
或inject
是做我想要的。
arr.collect! {|item| item * 3}