Issue #5044 has been updated by Benoit Daloze.


Hi,

Please have a look at http://redmine.ruby-lang.org/issues/4539 (or [ruby-core:35613]).

The reason is explained by Yusuke in [ruby-core:35682]:

>2011/4/5 Benoit Daloze <eregontp / gmail.com>:
>> An unconditional nil is anyway not useful here, the only concern I see
>> might be the cost of creating this Array.
>
>It is actually a problem.
>I have used Array#zip with block for iteration many times.
>
> big_ary1.zip(big_ary2) do |x, y|
>   p [x, y]
> end
>
>The change requires some people (including me) to *rewrite*
>such a code as follows:
>
> big_ary1.size.times do |i|
>   x, y = big_ary1[i], big_ary2[i]
>   ...
> end
>
>So I like zip_with, if it is really needed.

That issue kind of got lost, it is probably a good idea to continue it.

For your example, we could have [1,2,3].zip_with([1,2,3], :+)
----------------------------------------
Feature #5044: #zip with block return mapped results
http://redmine.ruby-lang.org/issues/5044

Author: Thomas Sawyer
Status: Open
Priority: Normal
Assignee: 
Category: 
Target version: 


Is there any reason that #zip doesn't return results like map?

  [1,2,3].zip([1,2,3]){ |a,b| a + b }  #=> [2,4,6]

Currently, it just returns nil, which seems rather contrary to the return result of the non-block form.



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