我正在尝试完成“第七天的七种语言”一书在IO第2天进行的第二个练习。在其中您问:“如果分母为零,您将如何更改/返回0?”我确定可以使用以下方法向Number添加方法:
Number new_div := method(i, if(i != 0, self / i, 0))
我不确定如何替换运算符表中的“/”。我试过了:
Number / := Number new_div
Number / := self new_div
但是我在尝试调用“/”时都遇到了一个异常(exception)。如何获取Number /的句柄,以便可以存储对旧方法的引用,然后出于自己的目的重新定义它?我要解决所有这些错误吗?
最佳答案
对于Eric Hogue(请参阅问题注释):
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
关于operators - 如何在不使用Io的情况下替换现有运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4262196/