Comportamento de inicialização do Scala

Por favor, olhe o código a seguir.

trait MyTrait { val myVal : String }

class MyClass extends MyTrait { val myVal = "Value" }

class MyClass2(val myVal: String) extends MyTrait 

Por que a ordem de inicialização é diferente no caso deMyClass eMyClass2? O construtor deMyClass será tão

MyClass() {
  MyTrait$class.$init$(this);
  myVal = value
}

O construtor deMyClass2 será

MyClass2(String myVal) { this.myVal = myVal; MyTrait$class.$init$(this) }

Eu acho que a ordem de inicialização deve ser tãoMyClass2O construtor de faz, o mesmo para ambos os casos.

questionAnswers(1)

yourAnswerToTheQuestion