From: "David A. Black" Date: 2009-11-11T21:12:48+09:00 Subject: Re: RCR enumerable extra into core Hi -- On Wed, 11 Nov 2009, Brian Candler wrote: > Rick Denatale wrote: >> On Tue, Nov 10, 2009 at 10:47 AM, Brian Candler >> wrote: >>> other Enumerators. When you want a real array, then add .to_a to the >>> end. >> >> And you base this ultimate conclusion on what? > > The OP was asking whether map(:foo) should return an Array or an > Enumerator. I was trying to say that if you're ambivalent about this, > one logical conclusion (or extreme viewpoint) is that you could always > return an Enumerator, even for > > map { |x| x*x } > > I wasn't saying that Ruby does anything like this, and it's a tangent to > the original thrust of map(:foo). This reminds me of the early 1.9.0 thing, where you could do: array = [1,2,3,4] enum = array.enum_for(:map, &lambda {|x| x * x }) enum.next # 1 enum.next # 4 etc. (That's ruby 1.9.0 (2008-03-01 revision 15660) [i686-darwin9.2.0].) To be honest, when that disappeared, it seemed to me to do away with a great deal of the usefulness of enumerators. Given that you can no longer attach a block to an enumerator when you create the enumerator, I don't think there are any actual use cases for the fact that map returns an enumerator (or at least very, very few). You can't do this, for example (following the above example): enum.select {|x| x > 1 } # [4, 9, 16] David -- The Ruby training with D. Black, G. Brown, J.McAnally Compleat Jan 22-23, 2010, Tampa, FL Rubyist http://www.thecompleatrubyist.com David A. Black/Ruby Power and Light, LLC (http://www.rubypal.com)