Hi --

On Sat, 8 Feb 2003, Ryan Pavlik wrote:

>         3)  If your semantics _do_ change, the error is actually
>             correct by definition: you're trying to do something
>             that's not allowed.  I'll bring up the Circle < Ellipse
>             example here; if you change the semantics of
>             Circle#setRadius to accept either (x, y; where x == y) or
>             (x), then there _is_ an error when you use (x, y; x != y).
>
>             Code should be smarter and take errors like this in
>             stride.

We're getting tied in unnecessary and irrelevant knots here.

My code *does* take everything in stride, and work correctly, in Ruby
1.6.8.  There is a change in Ruby 1.8.0 that makes it not work.  I
don't think I can be expected to have anticipated this change when I
wrote the code in August.

My code was not "trying to do something that's not allowed."  I did
not change the semantics of String#to_i; I subclassed String and
overrode a method.  String#to_i is completely unchanged.

>   *  Changing a method to do something illogical is possible but
>      questionable.

This is of course true, but very far afield from my question.

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.


David

-- 
David Alan Black
home: dblack / candle.superlink.net
work: blackdav / shu.edu
Web:  http://pirate.shu.edu/~blackdav