Scala类 - 必需属性

时间:2018-03-26 17:36:34

标签: scala traits

我想定义具有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。 你知道我怎么能实现它?

1 个答案:

答案 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的特征的属性来分割特征(尽管我对它有所不同)。