当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Ruby Array.product用法及代码示例


本文简要介绍ruby语言中 Array.product 的用法。

用法

product(*other_arrays) → new_array
product(*other_arrays) {|combination| ... } → self

计算并返回或产生所有数组中的所有元素组合,包括 selfother_arrays

  • 组合的数量是所有数组大小的乘积,包括 selfother_arrays

  • 返回组合的顺序是不确定的。

当没有给出块时,将组合作为数组数组返回:

a = [0, 1, 2]
a1 = [3, 4]
a2 = [5, 6]
p = a.product(a1)
p.size # => 6 # a.size * a1.size
p # => [[0, 3], [0, 4], [1, 3], [1, 4], [2, 3], [2, 4]]
p = a.product(a1, a2)
p.size # => 12 # a.size * a1.size * a2.size
p # => [[0, 3, 5], [0, 3, 6], [0, 4, 5], [0, 4, 6], [1, 3, 5], [1, 3, 6], [1, 4, 5], [1, 4, 6], [2, 3, 5], [2, 3, 6], [2, 4, 5], [2, 4, 6]]

如果任何参数是空数组,则返回一个空数组。

如果没有给出参数,则返回一个由 1 元素数组组成的数组,每个数组都包含 self 的一个元素:

a.product # => [[0], [1], [2]]

当给定一个块时,将每个组合产生为一个数组;返回 self

a.product(a1) {|combination| p combination }

输出:

[0, 3]
[0, 4]
[1, 3]
[1, 4]
[2, 3]
[2, 4]

如果任何参数是空数组,则不调用该块:

a.product(a1, a2, []) {|combination| fail 'Cannot happen' }

如果没有给出参数,则将 self 的每个元素生成为 1 元素数组:

a.product {|combination| p combination }

输出:

[0]
[1]
[2]

相关用法


注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 Array.product。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。