Ho un tratto e una classe che estende il tratto. Posso utilizzare i metodi della caratteristica come segue:Utilizzo del metodo tratto nel costruttore della classe
trait A {
def a = ""
}
class B(s: String) extends A {
def b = a
}
Tuttavia, quando uso il metodo del tratto nel costruttore in questo modo:
trait A {
def a = ""
}
class B(s: String) extends A {
def this() = this(a)
}
quindi viene visualizzato il seguente errore:
error: not found: value a
C'è un modo per definire i parametri di default per la costruzione di classi nel tratto?
EDIT: chiarire lo scopo: C'è l'Akka-TESTKIT:
class TestKit(_system: ActorSystem) extends { implicit val system = _system }
E ogni test è simile al seguente:
class B(_system: ActorSystem) extends TestKit(_system) with A with ... {
def this() = this(actorSystem)
...
}
perché voglio creare creazione comune del ActorSystem in A:
trait A {
val conf = ...
def actorSystem = ActorSystem("MySpec", conf)
...
}
non vedo come si può avere un parametro del costruttore che dipende da un membro della classe. Il membro della classe potrebbe (e di solito lo fa?) Dipendere dai parametri del costruttore, il che consentirebbe un riferimento circolare. Quindi 'def a' non è ancora inizializzato. –