Sum*_*uma 4 scala operator-overloading operator-precedence
以下代码无法编译:
implicit class TripleEq(val x: Int) {
def === (y: Int) = x == y
def !== (y: Int) = x != y
}
val a = 0
val b = 1
if (a == a && b === b) {
println("Equal")
}
if (a != b && a !== b) {
println("Not equal")
}
Run Code Online (Sandbox Code Playgroud)
错误是:
类型不匹配; 找到:需要整数:布尔值
当我将 括a !== b在括号中时,错误消失了。
我认为运算符优先级由它的第一个字母定义(见斯卡拉游),因此的优先级!==应该是相同的===,!=或==。
为什么上面的代码需要括号?