Issue #8970 has been updated by sawa (Tsuyoshi Sawada).


akr,  The difference between `Array#transpose` and `Array.zip` is just the same as with `Array#transpose` and `Array#zip`. That is, when  any non-first array is shorter than the first, it is complemented with  `nil`.
----------------------------------------
Feature #8970: Array.zip and Array.product
https://bugs.ruby-lang.org/issues/8970#change-42132

Author: sawa (Tsuyoshi Sawada)
Status: Open
Priority: Normal
Assignee: 
Category: 
Target version: 


=begin
Most of the time when I use `Array#zip` or `Array#product`, I feel cumbursome that I have to take out the first array and pass it as a receiver. For example, if I have

    a = [[:a, :b, :c], [:d, :e, :f], [:g, :h, :i]]

I have to do something like this:

    a.first.zip(*a.drop(1)){...}
    a.first.product(*a.drop(1)){...}

Sometimes, the receiver (i.e., the first array) has significance, but most other times, that breaks asymmetry, making the code look ugly. 

I would be happy if we had `Array.zip` and `Array.product` in addition so that we can do it like this:

    Array.zip(*a){...}
    Array.product(*a){...}

=end



-- 
http://bugs.ruby-lang.org/