From: Tanaka Akira Date: 2013-10-01T09:30:18+09:00 Subject: [ruby-core:57504] Re: [ruby-trunk - Feature #8970][Open] Array.zip and Array.product 2013/10/1 sawa (Tsuyoshi Sawada) : > Feature #8970: Array.zip and Array.product > https://bugs.ruby-lang.org/issues/8970 > 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){...} How different with Array#transpose ? % ruby -e ' a = [[:a, :b, :c], [:d, :e, :f], [:g, :h, :i]] p a.first.zip(*a.drop(1)) p a.transpose ' [[:a, :d, :g], [:b, :e, :h], [:c, :f, :i]] [[:a, :d, :g], [:b, :e, :h], [:c, :f, :i]] -- Tanaka Akira