Scala 如何将隐式排序传递给类

Scala 如何将隐式排序传递给类,scala,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 = Ar

我有这门课

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)
}
}
我怎么办?
谢谢

作为
个人
的成员添加
订购
似乎没有任何意义:为什么每个人都应该有自己的
订购

此外,隐式定义返回
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))

ageOrdering
属于
Person,Person=>Int类型
不是
Ordering[Person]
你可能想要类似于
隐式valageordering:Ordering[Person]=新的Ordering[Person]{…}
但是,您可能需要重新考虑对每个人进行排序,例如,如果您想对使用该排序的人的列表进行排序,您会使用哪个人的排序?更常见的是看到函数站点
def functionUsingPerson(p:Person,p1:Person)(隐式order:Ordering[Person])
使用隐式for
Ordering[Person]
尝试用
implicit val order:Ordering[Person]=Ordering.by{p:Person=>p.age}替换
implicit
implicit
定义,它应该可以工作。