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ãoMyClass2
O construtor de faz, o mesmo para ambos os casos.