Ruby Array#给出块时的产品方法行为

时间:2015-03-27 20:07:10

标签: ruby

在Ruby中,给出块时Array#product方法有什么作用?文档说“如果给出一个块,产品将产生所有组合并返回自我。”产生所有组合意味着什么?该方法对给定的块有什么作用?

1 个答案:

答案 0 :(得分:5)

通过“产生所有组合”意味着它将产生(提供)目标(自身)和其他(参数)数组中元素的所有组合到给定块。

例如:

a = [1, 2]
b = [:foo, :bar]
a.product(b) { |x| puts x.inspect } # => [1, 2]
# [1, :foo]
# [1, :bar]
# [2, :foo]
# [2, :bar]

大致相当于这个功能:

class Array
  def yield_products(other)
    self.each do |x|
      other.each do |y|
        yield [x, y] if block_given?
      end
    end
  end
end