Rus*_*ell 5 ruby arrays multidimensional-array
在Ruby中,有一种简单的方法可以将n维数组中的每个元素乘以一个数字吗?
这样:
[1,2,3,4,5].multiplied_by 2 == [2,4,6,8,10]
和[[1,2,3],[1,2,3]].multiplied_by 2 == [[2,4,6],[2,4,6]]?
(显然我编写了multiplied_by区分它的功能*,它似乎连接了数组的多个副本,遗憾的是这不是我需要的).
谢谢!
长形的等价物是:
[ 1, 2, 3, 4, 5 ].collect { |n| n * 2 }
Run Code Online (Sandbox Code Playgroud)
这并不是那么复杂.你可以随时制作你的multiply_by方法:
class Array
def multiply_by(x)
collect { |n| n * x }
end
end
Run Code Online (Sandbox Code Playgroud)
如果你希望它以递归方式相乘,你需要将其作为特殊情况处理:
class Array
def multiply_by(x)
collect do |v|
case(v)
when Array
# If this item in the Array is an Array,
# then apply the same method to it.
v.multiply_by(x)
else
v * x
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8244 次 |
| 最近记录: |