我想定义具有const属性的trait,例如:
trait InitialTest {
// property would be set here or somewhere else, let's call it typeNumber
override def toString = typeNumber.toString
}
然后我想为每个实现设置这个值,如:
case class InitialTest1 extends InitialTest {
// set value here like typeNumber = 4
}
对于每个toString函数,都会使用trait中的implemetation。 你知道我怎么能实现它?
答案 0 :(得分:2)
实现它的最简单方法是,我看到:
trait MyTrait {
val myProperty: X // abstract property
override def toString: String = myProperty.toString
}
它会强制执行该属性:
class Impl extends MyTrait {
val myProperty = new X // without that line it doesn't compile
}
从那以后,人们可能会进一步复杂化设计,例如通过使用蛋糕模式覆盖带有toString的特征的属性来分割特征(尽管我对它有所不同)。