如果我要用预先存在的数组创建一个新数组并使用数学运算符修改内容,那么这样做的好方法是什么?当我尝试使用下面的代码时,我收到有关未定义方法的错误。
ary1 = [1, 2, 3, 4, 5]
ary2 = ary1.each { |i|
ary1[i] = ary1[i] * 10
}
p ary1
p ary2
我假设数组运算符不包含在Array类中。
答案 0 :(得分:8)
您正在寻找map
函数(docs):
ary1 = [1, 2, 3, 4, 5]
ary2 = ary1.map {|value| value * 10}
map
通常是通过转换给定数组来生成新数组的好方法。您传递一个块,该块为数组中的每个项目调用。该块接收每个项目 - 而不是索引 - 作为参数,我称之为value
。块的返回值被收集到一个新数组中,然后在map
函数完成时返回该数组。