Issue #8970 has been updated by So Wieso.


+1
This would make code more readable by not breaking the symmetry.
Also would be nice if the block version wouldn't return nil, but instead the concatenation of all return values, like map does. (not that an explicit map would hurt, but this is a waste of a return value)
> `Array.zip([1,2,3],[4,5,6]){|left,right| left + right} => [5,7,9]`


----------------------------------------
Feature #8970: Array.zip and Array.product
https://bugs.ruby-lang.org/issues/8970#change-45541

* Author: 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/