On Friday, February 7, 2003, at 03:15 PM, dblack / candle.superlink.net 
wrote:

> To bring us back on track: what we're discussing is not whether or how
> to override methods in subclasses, but the relative merits of the two
> behaviors of Regexp#match.  Either behavior can be accomodated; I
> simply want to know the history of why the new one was chosen.
>

I'm sure someone else on this list could provide you with a better 
explanation,
but I think this change supports the general principle of not demoting 
return
values unnecessarily.

This tends to expose more functionality in subclasses and results in 
less coding.
(Of course, this principle is built upon the more general assumption 
that a subclass
is going to include the functionality of its ancestors.)

It make sense that String#scan, String#slice, String#dup all return 
various parts of
the given string.  Would it make sense for SpecializeString#dup to 
return a
String?  Shouldn't #slice, #split and #scan do the same thing?

Why not assume that a substring of a string is the same kind of string? 
  What's
the advantage of the old behavior?

-J