Scala Initialisierungsverhalten

Bitte schauen Sie sich den folgenden Code an.

trait MyTrait { val myVal : String }

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

class MyClass2(val myVal: String) extends MyTrait 

Warum unterscheidet sich die Initialisierungsreihenfolge beiMyClass undMyClass2? Der Konstruktor vonMyClass wird als

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

Der Konstruktor vonMyClass2 wird sei

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

Ich denke, die Initialisierungsreihenfolge sollte wie folgt lauten:MyClass2er Konstruktor von @ funktioniert in beiden Fällen gleich.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage