7

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

[[1,2],[3,4],[5,6]] => [[1,3,5], [2,3,5], ...]

我不确定,因为在 Ruby 文档中,该product方法是用任意数量的参数定义的,所以只需将我的数组数组作为参数传递,就像这样:

[].product(as) => [

还不够。我该如何解决这个问题?

4

2 回答 2

11

The method takes multiple arguments, but not an array containing arguments. So you have to use it in this way:

[1,2].product [3,4], [5,6]

If as is your array of arrays, you will have to "splat" it like this:

as[0].product(*as[1..-1])
于 2013-02-03T01:36:47.550 回答
1

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

:product.to_proc.call(*as)

# shorthand
:product.to_proc.(*as)
:product.to_proc[*as]
于 2018-01-23T12:44:31.443 回答