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

标签 operators iolanguage

我正在尝试完成“第七天的七种语言”一书在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/

相关文章:

c# - VB.Net 相当于 C# 中的 ^ 运算符

java - 如何使用 Java 计算器进行单操作数数学运算?

php if 语句具有两个条件之一 if( a < b) or (b=0)

macos - 安装 IO(语言)时出错

string - 如何将字符串转换为 Io 中的列表?

concurrency - Io 语言如何自动检测死锁?

c++ - C++ 中 ^ 运算符的作用是什么

PHP 定义 var = 一个或另一个(又名 : $var=($a||$b);)

frameworks - Io 框架开始学习 Io(编程语言)