Dieses Beispiel ist ein Modell eines größeren Problems, das ich versuche zu lösen. Die Hierarchie an der Spitze ist die abstrakte Eigenschaft CarFamily, dann gibt es 3 abstrakte Merkmale erstreckt sich von CarFamily, nämlich Honda, Civic und Volvo. Mein Ziel ist es, das carModelStatement für jedes Kind-Merkmal in einer Instanz aufrufen zu können, die sich von diesen 3 Merkmalen erstreckt.Scala-Eigenschaft: Kann abstrakte Elternattributwerte nicht erhalten, indem Werte im Kind übergeben werden
Wie Sie jedoch die Ergebnisse sehen, die Aussagen alle zurück "Das Modell des Autos ist Null". Also wurde der Valvolvo, Honda, Civic nicht an das Ich bin neu in Scala übergeben. Möchte wissen, was ich vermisse oder ob es ein anderes Design gibt, um zu bekommen, was ich will. Vielen Dank!
trait CarFamily {
val carModel: String
def carModelStatement: String = s"The model of the car is ${carModel}"
}
trait Honda extends CarFamily {
val honda: String
override val carModel: String = honda
def hondaModelStatement : String = carModelStatement
}
trait Civic extends CarFamily {
val civic: String
override val carModel: String = civic
def civicModelStatement : String = carModelStatement
}
trait Volvo extends CarFamily {
val volvo: String
override val carModel: String = volvo
def volvoModelStatement : String = carModelStatement
}
object allModels extends Volvo with Civic with Honda {
val volvo = "Volvo X3"
val civic = "Civic Family"
val honda = "Honda Extreme"
}
allModels.volvoModelStatement //res1: String = The model of the car is null
allModels.civicModelStatement // res2: String = The model of the car is null
allModels.hondaModelStatement // res3: String = The model of the car is null
Ich habe Angst, dass, wenn Sie diese, an die Arbeit Sie werden feststellen, dass es nicht recht tun, was Sie vielleicht erwarten . –