我是Scala的新手。我只是想知道为什么我们有时候,尤其是在Scala API中,使用类值覆盖特征函数,如下例所示:
sealed trait Amount {
def amount: Double
}
case class Percentage(amount: Double) extends Amount {
override def toString = s"$amount%"
}
答案 0 :(得分:0)
为什么不呢?
特征或超类中有def
,因为它允许继承类/特征中的不同实现;允许用val
覆盖,否则你必须写
case class Percentage(_amount: Double) extends Amount {
def amount = _amount
override def toString = s"$amount%"
}
这种情况经常发生,导致许多无用的代码。