在7 周内的 7 种语言一书中有一个问题:
如果分母为零,您将如何更改 / 以返回 0?
感谢线程self 在方法内部的意义是什么?我有一个可行的解决方案,但我想尝试在不破坏数字“/”方法的情况下做到这一点,而是将数字子类化。这是我尝试过的:
Zeroable := Number clone
Zeroable / = method(denom, if(denom == 0, 0, self proto / denom))
但是,这不起作用。如果我尝试实例化 Zeroable 的实例,它的行为就像一个数字:
Io> ten := Zeroable 10
==> 10
Io> ten type
==> Number
Io> ten / 5
==> 2
Io> ten / 0
==> inf
Io> ten slotNames
==> list()
如果我以“正常”的方式将 Zeroable 实例化,但它的值始终为 0,并且似乎没有办法改变它:
Io> zero := Zeroable clone
==> 0
Io> zero type
==> Zeroable
Io> zero / 0
==> 0
Io> zero / 2
==> 0
我认为问题在于ten
实例化的方式,但我无法弄清楚如何将“参数”传递给克隆方法,或者如何创建一个不为 0 的 Zeroable。这是怎么回事?