考虑以下几点:有没有办法在运行时重命名Scala(或Java)中的方法?
case class Num(value: Double) {
def plus(rhs: Num) = Num(value + rhs.value)
def times(rhs: Num) = Num(value * rhs.value)
}
object TestApp extends App {
// ** maybe do something here
val one = Num(1)
val two = Num(2)
val three = Num(3)
val result = three plus one times two
}
有没有办法在Num
的plus
方法/函数重命名为+plus
和times
方法*times
在运行时,因为result = three +- one *- two
?
这在运行时发生是非常重要的。如果可能的话,我想避免编译器插件。另外,如果适用,我不反对java示例。
我想这样做的原因是因为Scala中的默认运算符优先级为three plus one times two
结果在8时three +- one *- two
导致5
如果您使用代数优先的结果不应该是5,这是6 –
我的直觉是,这个问题是不是Scala的predecence的默认顺序,而你不知道不需要重新命名方法来“解决”这个问题。 –
@Amir阿富汗人,3 + 1 * 2 = 5“正常”优先规则,不知道哪里来的6。 –