Загадка выполнения метода в Scala

Сначала я объявляю класс:

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

, и оно выводит

enter image description here

Но почему не Метод *** идет первым? Разве приоритет *** не выше, чем +++ ? А как насчет Java и C? Он такой же, как в Scala?

5
задан Kim Stebel 25 November 2011 в 08:53
поделиться