Mire el siguiente código.Comportamiento de inicialización de Scala
trait MyTrait { val myVal : String }
class MyClass extends MyTrait { val myVal = "Value" }
class MyClass2(val myVal: String) extends MyTrait
¿Por qué se diferencia el orden de inicialización en caso de MyClass
y MyClass2
? El constructor de MyClass
será tan
MyClass() {
MyTrait$class.$init$(this);
myVal = value
}
El constructor de MyClass2
será
MyClass2(String myVal) { this.myVal = myVal; MyTrait$class.$init$(this) }
Creo que el orden de inicialización debe ser lo más MyClass2
's constructor hace, el mismo en ambos casos.
Finalmente, he visto la razón por la que Scala inicializa un objeto en ese orden. Gracias por la respuesta, Daniel. – Dmitry