我只是在向Ruby学习道歉,如果这不是这里的新手,但是我无法从镐本书中解决这个问题(可能只是不够仔细地阅读)。无论如何,如果我有一个像这样的数组:
arr = [1,2,3,4,5]
...而我想说的是,将数组中的每个值乘以3,我得出以下结论:
arr.each {|item| item *= 3}
...不会得到我想要的东西(我知道为什么,我没有修改数组本身)。
我没有得到的是如何在迭代器之后从代码块内部修改原始数组。我敢肯定这很容易。
Answers:
要直接修改数组,请使用arr.map! {|item| item*3}
。要基于原始数组创建一个新数组(通常更可取),请使用arr.map {|item| item*3}
。实际上,在使用之前,我总是三思而后行each
,因为通常会有一个像的高阶函数map
,select
或者inject
就是我想要的。
arr.map!{ destructive_op}
永久改变的事情怎么办arr
?