Hi,

At Sat, 8 Feb 2003 11:30:25 +0900,
dblack / candle.superlink.net wrote:
> > > This has possible implications for other classes:
> > >
> > >   candle:~/hacking/ruby$ irb --simple-prompt
> > >   >> class A < Array; end; A.new.replace([1,2,3]).class
> > >   => A
> > >   >> class A < Array; end; A.new.replace([1,2,3]).map {|x| x}.class
> > >   => Array
> >
> > Enumerable#map always returns Array regardless its receiver.
> 
> Right -- I'm just wondering why the "regardless-of-receiver" principle
> operates here but not with String#scan and others.  (And with
> Regexp#match it's the class of the argument, not the receiver, that
> determines the return value's class.)

In this case, the returned object isn't concerned with the
receiver.  Enumerable methods return Array incidentally.  OTOH,
String#[], #scan and so on return the receivers' subcomponent.

I also sometimes want ways to override the class of returned
object, but it's another story.

-- 
Nobu Nakada