如何在不调用Io的情况下替换现有的运算符?

Mar*_*k B 31 operators iolanguage

我正试图在七天七语中的第二天完成第二次练习.在你的问题中,"如果分母为零,你会如何改变/返回0?"我已经确定我可以使用以下方法向Number添加方法:

Number new_div := method(i, if(i != 0, self / i, 0))
Run Code Online (Sandbox Code Playgroud)

我不确定如何替换运算符表中的"/".我试过了:

Number / := Number new_div
Number / := self new_div
Run Code Online (Sandbox Code Playgroud)

但是当我试图调用"/"时,我得到两个例外.如何处理Number /所以我可以存储对旧方法的引用,然后为自己的目的重新定义它?我错了吗?

dra*_*tun 39

对于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
Run Code Online (Sandbox Code Playgroud)

  • 我希望解决方案涉及运算符表.谢谢你的回答. (2认同)