Comportamiento de inicialización de Scala
Por favor mira el siguiente código.
trait MyTrait { val myVal : String }
class MyClass extends MyTrait { val myVal = "Value" }
class MyClass2(val myVal: String) extends MyTrait
¿Por qué difiere el orden de inicialización en caso deMyClass
yMyClass2
? El constructor deMyClass
será como
MyClass() {
MyTrait$class.$init$(this);
myVal = value
}
El constructor deMyClass2
estarán
MyClass2(String myVal) { this.myVal = myVal; MyTrait$class.$init$(this) }
Creo que el orden de inicialización debería ser comoMyClass2
El constructor lo hace, lo mismo para ambos casos.