【发布时间】:2011-11-25 08:29:40
【问题描述】:
首先我声明一个类:
class Op(var x : Int) {
def +++(op: Op) = {
println(this.x + " +++ " + op.x)
this.x += op.x
this
}
def ***(op: Op) = {
println(this.x + " *** " + op.x)
this.x *= op.x
this
}
}
现在我在 REPL 中执行表达式:
op1 +++ op2 +++ op3 *** op4
然后输出
但是为什么方法*** 不先行呢? ***的优先级不是比+++高吗?那么Java和C呢?它和Scala一样吗?
【问题讨论】:
-
为什么
***的优先级要高于+++?就因为它隐约看起来像乘法和加法? -
没有。 scala中方法的优先级由方法名的第一个字符决定。有关更多信息,请参阅第 5 章第 8 节的
标签: java c scala operator-precedence