【发布时间】:2016-04-17 17:43:35
【问题描述】:
是否可以根据扩展类将 trait 中定义的方法限制为某种类型?例如:
trait Score extends Ordered[Score] {
val reducedValue: Float // must be implemented by extending classes
def compare (that: Score): Int = this.reducedValue.compare(that.reducedValue)
}
case class MarksScore (set: Boolean) extends Score {
val reducedValue = if (this.set) 1.0f else 0.0f
}
case class RankingScore (rank: Float) extends Score {
val reducedValue = this.rank
}
这样MarksScore(true) 与RankingScore(5) 相当,这很好,但毫无意义。所以我想将compare 限制为仅对应类的对象,而不是Score 的所有实现者。
【问题讨论】: