考慮以下幾點:有沒有辦法在運行時重命名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。 –