如何在scala中执行本机算法而不是方法调用?

时间:2014-07-03 10:00:56

标签: scala

如果我在scala中编写表达式1+2,则表示实际+方法调用对象1。 但是如何实现+功能?如果它是这样的:

public Int + (one: Int, two: Int) {
    return one + two
}
//Sorry if syntax is not well correct

它导致无限递归,因为+是函数并调用自身。

从逻辑上讲,必须有一种方法可以告诉scala做“本机”加法操作而不是+函数调用。

怎么做?

1 个答案:

答案 0 :(得分:4)

+方法是一种内在方法 - 它由Scala编译器专门翻译。 Scala编译器将+方法调用重写为字节码中的加法指令。

1 + 2

变为(字节码):

iconst_1
iconst_2
iadd