Ruby 在数组数组上计算数组乘积

Ruby 在数组数组上计算数组乘积,ruby,arrays,Ruby,Arrays,为了在Ruby中计算笛卡尔乘积,可以使用Array#product,如果我有一个数组并想要计算乘积,语法是怎样的 [[1,2],[3,4],[5,6]] => [[1,3,5], [2,3,5], ...] 我不确定,因为在Ruby文档中,product方法是用任意数量的参数定义的,所以只需将我的数组作为参数传递,如下所示: []产品(as)=>[ 不够。如何解决此问题?此方法接受多个参数,但不是包含参数的数组。因此,您必须以以下方式使用它: [1,2].product [3,4], [

为了在Ruby中计算笛卡尔乘积,可以使用
Array#product
,如果我有一个数组并想要计算乘积,语法是怎样的

[[1,2],[3,4],[5,6]] => [[1,3,5], [2,3,5], ...]
我不确定,因为在Ruby文档中,
product
方法是用任意数量的参数定义的,所以只需将我的数组作为参数传递,如下所示:

[]产品(as)=>[


不够。如何解决此问题?

此方法接受多个参数,但不是包含参数的数组。因此,您必须以以下方式使用它:

[1,2].product [3,4], [5,6]
如果
as
是数组的数组,则必须按如下方式“splat”它:

as[0].product(*as[1..-1])

我得到的最接近的符号是:

:产品到过程调用(*as)
#速记
:product.to_proc.(*as)
:product.to_proc[*as]

[].product(*as)
总是生成一个空数组,这是一个遗憾,因为按照OP的要求去做会很好,而不必将其中一个数组作为第一个对象。有一个与此相关的讨论,其中一些人支持类方法,如
array.product(*array)
。我认为这会很有用,但我想这没有发生。
(as[0])。产品(*as.drop(1))
是一个适用于Mateusz Konieczny的版本,感谢您的改进!我只是稍微改变了一下样式。