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