:実行時に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
}
は、result = three +- one *- two
その実行時に*times
へ+plus
にNum
でplus
方法/機能の名前を変更する方法とtimes
方法はありますか?
これは実行時に発生することが非常に重要です。可能であればコンパイラプラグインを避けたい。また、該当する場合、私はJavaの例に反対していません。 5.
結果はあなたが代数の優先順位を使用している場合は、「それは6 –
私の直感では、問題がpredecenceのScalaのデフォルトの順序ではないということですだ、とあなたはドン5.べきではありませんこの問題を解決するために、「オンザフライで」メソッドの名前を変更する必要があります。 –
@Amir Afghani、3 + 1 * 2 = 5「通常の」優先ルールでは、6がどこから来たのかわからない。 –