Hi -- On Wed, 12 Feb 2003, Mathieu Bouchard wrote: > > On Sat, 8 Feb 2003 dblack / candle.superlink.net wrote: > > > Even if the new class is specialized, substrings of it may not be > > similarly specialized -- in which case, it's misleading to have them > > be instances of the new class. For example: > > class Name < String > > def initial > > scan(/[A-Z]/)[0] > > end > > end > > n = Name.new("David") > > i = n.initial # String in 1.6.8, Name in 1.8.0 > > Here, it doesn't seem logical (to me) for an initial to be a Name > > object. (Yes, I could have done self[0].chr, but I need to illustrate > > this :-) > > To me, it doesn't seem logical for the Name class to exist; a Name may be > "a kind of" String, but that doesn't mean it should be a subclass it... > here are a few ideas i've been cooking lately about software modeling (an > extension of my rants :-} about type checking): [...] > Which makes me doubt whether the example you are giving is applicable in > real programs (or: whether it is good practice to apply it), and in turn, > whether your point is valid. Keep in mind that my point has nothing to do with advocacy of inheriting from String. It's about what happens when one *does* inherit from String. The "whether to do it" question is very interesting to me (I started a thread on precisely that question on ruby-talk yesterday), but it's tangential to the question under discussion here. What you're saying amounts to: if I can't think of a really great example of this, then anyone who does it deserves to have the core language shift under their feet. Similarly, if inheriting from String is a bad idea, then the only reason for the change we're discussing is to punish people who've done it. Somehow I don't think that's the whole story :-) David -- David Alan Black home: dblack / candle.superlink.net work: blackdav / shu.edu Web: http://pirate.shu.edu/~blackdav