Thanks for references, I understand that it was discussed already, and decision was made; imho: it's irregular and not OO, but who cares about formal, theoretical correctness, 'be practical' criteria rules! Regarding 'to_s, to_str returning String': hope documentation will be fixed; regards Sergey "George Ogata" <g_ogata / optushome.com.au> wrote in message news:87ek182n78.fsf / optushome.com.au... > "S.Volkov" <svolkov / comcast.net> writes: > >> Could you please explain me why String instance methods return subclass, >> and MyStr#to_s returns String, not the receiver as specified? > > String (and Array) methods that return new strings (arrays) tend to > return instances of the receiver's class rather than String. This > often makes subclassing a bit less painful, although a couple of pies > have been flung over it too: > > * [ruby-talk:54225] ( http://rubyurl.com/dv2 ) > * [ruby-talk:55268] ( http://rubyurl.com/T5G ) > * [ruby-core:801] ( http://rubyurl.com/Ic6 ) > > That last thread is probably what led to the following Changelog > entry, which explains the behaviour of MyStr#to_s you saw. > > Mon Feb 10 10:14:26 2003 Yukihiro Matsumoto <matz / ruby-lang.org> > > * array.c (rb_ary_to_a): return value should be an Array if the > receiver is an instance of subclass of Array. > > * string.c (rb_str_to_s): return value should be a String if the > receiver is an instance of subclass of String.