如果我在scala中编写表达式1+2
,则表示实际+
方法调用对象1
。
但是如何实现+
功能?如果它是这样的:
public Int + (one: Int, two: Int) {
return one + two
}
//Sorry if syntax is not well correct
它导致无限递归,因为+
是函数并调用自身。
从逻辑上讲,必须有一种方法可以告诉scala做“本机”加法操作而不是+
函数调用。
怎么做?
答案 0 :(得分:4)
+
方法是一种内在方法 - 它由Scala编译器专门翻译。 Scala编译器将+
方法调用重写为字节码中的加法指令。
1 + 2
变为(字节码):
iconst_1
iconst_2
iadd