Ruby数组#给定块时的乘积方法行为

Ruby数组#给定块时的乘积方法行为,ruby,Ruby,在Ruby中,当给定一个块时,数组#乘积方法做什么?文档中说“如果给定一个块,产品将生成所有组合并返回自身。”生成所有组合意味着什么?该方法对给定块有何作用?通过“生成所有组合”,意味着它将向给定块生成(提供)目标(自身)数组和其他(参数)数组中元素的所有组合 例如: a = [1, 2] b = [:foo, :bar] a.product(b) { |x| puts x.inspect } # => [1, 2] # [1, :foo] # [1, :bar] # [2, :foo]

在Ruby中,当给定一个块时,数组#乘积方法做什么?文档中说“如果给定一个块,产品将生成所有组合并返回自身。”生成所有组合意味着什么?该方法对给定块有何作用?

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

例如:

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