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