Il semble y avoir une subtilité lors de l'utilisation de la syntaxe d'initialisation précoce.L'initialisateur initial `new {} avec SomeTrait` échoue
trait Base { def callMe = "callMe" }
trait Proxy { this: Base => def call = s"proxied: $callMe" }
val base1 = new Base { } // non-early init works
val baseFail = new { } with Base // error: trait Base is abstract; cannot be instantiated
val base2 = new { val n=1 } with Base // why does this fix the failure?
val proxy = new { } with Base with Proxy // why doesn't this fail?
Pourquoi la ligne baseFail
échouent, tandis que les autres ne le font pas val
s?
Le message d'erreur est également source de confusion - Je ne cherche pas à instancier Base
, mélanger seulement dans