有没有一种很好的方法可以动态创建一个可链接的 Ruby 数组,它结合了映射和注入?
这就是我的意思。让我们a
成为一个整数数组,然后得到 2 个相邻元素的所有总和,我们可以这样做:
a.each_cons(2).map(&:sum)
我们还可以通过以下方式获得数组所有元素的乘积a
:
a.inject(1,&:*)
但我们不能这样做:
a.each_cons(2).map(&:inject(1,&:*))
但是,我们可以定义一个可链接的数组:
class Array
def prod
return self.inject(1,&:*)
end
end
然后a.each_cons(2).map(&:prod)
工作正常。