On Thu, Jan 15, 2004 at 12:47:24AM +0900, Jim Freeze wrote:
> Hi
> 
> I just noticed that Enumerable does not support collect! although
> it does support collect. Was this changed from earlier versions?
> If so, why?
> 
> irb(main):001:0> class M
> irb(main):002:1> def each
> irb(main):003:2> yield 1
> irb(main):004:2> yield 2
> irb(main):005:2> end
> irb(main):006:1> end
> => nil
> irb(main):007:0> class M
> irb(main):008:1> include Enumerable
> irb(main):009:1> end
> => M
> irb(main):010:0> m=M.new
> => #<M:0x1892d0>
> irb(main):011:0> m.collect { |i| i*2 }
> => [2, 4]
> irb(main):012:0> m.collect! { |i| i*2 }
> NoMethodError: undefined method `collect!' for #<M:0x1892d0>
>         from (irb):12

Does collect! (or map!) make sense for Enumerables? Keep in mind that
collect! (aka map!) is defined in Array.
I guess you could define it as 
  module Enumerable
    def collect!(&b)
		to_a.collect!(&b)
	end
  end
but I don't feel too bad about having to do to_a explicitly.

-- 
 _           _                             
| |__   __ _| |_ ___ _ __ ___   __ _ _ __  
| '_ \ / _` | __/ __| '_ ` _ \ / _` | '_ \ 
| |_) | (_| | |_\__ \ | | | | | (_| | | | |
|_.__/ \__,_|\__|___/_| |_| |_|\__,_|_| |_|
	Running Debian GNU/Linux Sid (unstable)
batsman dot geo at yahoo dot com

There are 3 kinds of people: those who can count & those who can't.
	-- Unknown source