I’m trying to complete the second exercise on IO day 2 in the book Seven Languages in Seven Days. In it your asked, “How would you change / to return 0 if the denominator is zero?” I've determined that I can add a method to Number using:
Number new_div := method(i, if(i != 0, self / i, 0))
What I’m not sure is how to replace the ”/” in the operator table. I’ve tried:
Number / := Number new_div Number / := self new_div
But I get an exception to both as it’s trying to invoke ”/”. How do I get a handle on Number / so I can store a reference to the old method and then redefine it for my own purposes? Am I going about this all wrong?
For Eric Hogue (see question comments):
origDiv := Number getSlot("/") 10 origDiv(5) println # => 2 10 origDiv(0) println # => inf Number / := method (i, if (i != 0, self origDiv(i), 0) ) (10 / 5) println # => 2 (10 / 0) println # => 0
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With