a = [1, 2, 3]
a.each do |x| x+=10 end
此操作后,数组a仍为[1, 2, 3]
。如何将其转换为[11, 12, 13]
?
答案 0 :(得分:7)
使用collect!
方法:
a = [1, 2, 3]
a.collect!{ |x| x + 10 }
答案 1 :(得分:5)
答案 2 :(得分:2)
我自己喜欢别名“地图”。它的字符较少。
与您所做的相比,这些方法的差异有两个方面。一个是你必须使用一个修改初始数组的方法(通常这些是爆炸方法,或者名称以!(map!,collect!,...)结尾的方法。第二个是a .each是通常用于遍历数组以使用单个元素的方法.Map或Collect方法返回一个包含块的每次迭代返回的数组。
因此,你可以做到以下几点:
a = [1,2,3]
b = []
a.each do |x|
b << x+10
end
或者您可以使用dmarko或此处所示的地图或收集方法:
a = [1,2,3]
a = a.map {|x| x+10}