From: Ken Bloom Date: 2009-12-07T08:08:33+09:00 Subject: Re: ruby 1.9 and collect On Sun, 06 Dec 2009 22:09:53 +0900, David A. Black wrote: > Hi -- > > On Sun, 6 Dec 2009, Martin DeMello wrote: > >> On Sun, Dec 6, 2009 at 2:34 PM, David A. Black >> wrote: >>> >>> As others have said, there are better ways (mainly File.readlines). As >>> for map/collect in general: it's hard to come up with a useful value >>> when it's called without a block. >> >> The use case I can see is to turn an Enumerable into an Array. Which >> means that you should be using to_a instead, and checking, >> File.open("foo").to_a does indeed do the right thing. > > It will work (using map instead of to_a in 1.8), but I don't think it's > a real use case, in the sense that it would never be the best way. In > other words, there's a use case for what map without a block does, but > not for using map to do it. > > I'm not sure there are any real uses for map returning an enumerator, as > in 1.9, either. You can do: > > a = [1,2,3] > e = a.map > e.each {|x| x * 10 } # [10, 20, 30] > > but that's just a long way of writing map. > > > David ["foo","bar","baz"].map.each_with_index{|val,idx| "#{idx} #{val}"} => ["0 foo","1 bar","2 baz"] -- Chanoch (Ken) Bloom. PhD candidate. Linguistic Cognition Laboratory. Department of Computer Science. Illinois Institute of Technology. http://www.iit.edu/~kbloom1/