Ответ 1
Он не инвертируется в Scala. Попробуйте следующее:
val what = 5 == 8 < 4
Я получаю предупреждение во время компиляции: comparing values of types Boolean and Int using `==' will always yield false
; так что, очевидно, компилятор перевел это на 5 == (8 < 4)
, как в Java.
Вы также можете попробовать:
class Foo {
def ===(o: Foo) = { println("==="); this }
def <<<(o: Foo) = { println("<<<"); this }
def >>>(o: Foo) = { println(">>>"); this }
}
def foo = new Foo
Затем вызов foo === foo <<< foo >>> foo
печатает это:
<<<
>>>
===
Это означает, что он был проанализирован как (foo === ((foo <<< foo) >>> foo))
Можете ли вы привести пример, когда приоритет отменен?