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