この例は、私が解決しようとしているより大きな問題のモックアップです。一番上の階層は抽象的な特性CarFamilyであり、CarFamily、すなわちHonda、Civic、Volvoから3つの抽象的な特性が拡張されています。私の目標は、これらの3つの特性から拡張されたインスタンス内の各子特性のcarModelStatementを呼び出すことです。スカラ特性:子に値を渡して抽象親特性値を取得できません。
しかし、結果がわかるように、すべてのステートメントは「車のモデルはnullです」と返します。だから、val volvo、honda、市民は私がScalaを初めて使う人には渡らなかった。私は何が欠けているか、私が欲しいものを得るために別のデザインがあるかどうかを知りたいですか?ありがとう!
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
私はあなたが仕事にこれを取得するとき、あなたはそれが非常にあなたが期待するかもしれない何をしていないことが判明することを恐れています。 –