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