如何将隐式排序传递给类

时间:2018-03-26 11:57:30

标签: scala

我有这门课

case class Person(name: String, age: Int)(implicit org: Ordering[Person])

尝试实例化时失败,因为我没有正确传递排序参数。

object Person {
implicit def ageOrdering(a: Person, b: Person): Int = a.age compare b.age
def main(args: Array[String]): Unit = {
val people = Array(Person("aa", 30), Person("bb", 32), Person("cc", 19))
Sorting.quickSort(people)
}
}

我该如何管理它? 感谢

1 个答案:

答案 0 :(得分:1)

Ordering添加为Person的成员似乎没有任何意义:为什么每个人都有自己的Ordering

此外,您的隐式定义返回Int s,而非订单。

请改为尝试:

case class Person(name: String, age: Int)

object Person {
  implicit object AgeOrdering extends Ordering[Person] {
    def compare(a: Person, b: Person): Int = a.age compare b.age
  }
  def main(args: Array[String]): Unit = {
    val people = Array(Person("aa", 30), Person("bb", 32), Person("cc", 19))
    println(people.sorted.toList)
  }
}

输出:

List(Person(cc,19), Person(aa,30), Person(bb,32))