product(*lists) -> Array
[permalink][rdoc]product(*lists) { |e| ... } -> self
レシーバの配列と引数で与えられた配列(複数可)のそれぞれから要素を1 個ずつとって配列とし,それらのすべての配列を要素とする配列を返します。
返される配列の長さは,レシーバと引数で与えられた配列の長さのすべての積になります。
例:
[1,2,3].product([4,5]) # => [[1,4],[1,5],[2,4],[2,5],[3,4],[3,5]] [1,2].product([1,2]) # => [[1,1],[1,2],[2,1],[2,2]] [1,2].product([3,4],[5,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,2].product() # => [[1],[2]] [1,2].product([]) # => []
ブロックが与えられた場合、作成した配列の各要素を引数としてブロックを実行して self を返します。
a = [] [1,2,3].product([4,5]) {|e| a << e} # => [1,2,3] a # => [[1,4],[1,5],[2,4],[2,5],[3,4],[3,5]]