Этот вопрос Простой идиоматический способ определения порядка для простого класса дел выглядит аналогично, но не одинаково. Этот вопрос больше связан с приоритетной очередью.
import scala.collection.mutable.PriorityQueue
case class Task(prio: Int, text: String, jobPriority:Int)
extends Ordered[Task] {
def compare(that: Task) = that.prio compare this.prio
// def compare(x: Task, y: Task) = y.prio compare this.prio //&& y.jobPriority compare this.jobPriority
}
//test
var q: mutable.PriorityQueue[Task] = PriorityQueue[Task]() ++ Seq(Task(3, "Clear drains",1), Task(4, "Feed cat",2),
Task(5, "Make tea",9), Task(1, "Solve RC tasks",5), Task(2, "Tax return",5))
while (q.nonEmpty) println(q dequeue)
дает мне такой вывод:
Task(1,Solve RC tasks,5)
Task(2,Tax return,5)
Task(3,Clear drains,1)
Task(4,Feed cat,2)
Task(5,Make tea,9)
, теперь я также хочу учитывать jobPriority
при проведении сравнения. так же, как пользовательский компаратор Java, который сравнивает несколько атрибутов.
Есть ли в Scala какой-либо способ добиться этого?