我有这样的:订货与代数类型斯卡拉
abstract class Issue(...) extends Ordered[Issue] {
def compare(o : Issue) = due.compare(o.due)
def render() : String
}
case class Task(..., subtasks : scala.List[Subtask]) extends Issue(...) {
def render() = ...
}
case class Subtask(..., parent : String) extends Issue(...) {
override def compare(o:Subtask) = {
... delegate to some field's compare function ...
}
def render() = ...
}
我想用
val l1 : List[Task] = tasks.sorted
val l2 : List[Subtask] = subtasks.sorted
但它不工作:
error: diverging implicit expansion for type scala.math.Ordering[this.Subtask]
starting with method ordered in trait LowPriorityOrderingImplicits
,subtasks.sorted.map(_.render()).mkString(" | ")).mkString(" | ")
我怎样写这个aglebraic类型与个人构造函数的不同顺序?
使用'Ordering'代替。 – 2012-08-10 18:02:32