From: "Mauricio Fernández" Date: 2004-01-15T00:55:10+09:00 Subject: Re: collect! and Enumerable 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 > => # > 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 # > 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