鉴于:
case class Person(name: String)
并试图做:
scala> List(Person("Tom"),Person("Bob")).sorted
导致关于缺少订购的投诉。
<console>:8: error: Could not find implicit value for parameter ord: Ordering[Person] List(Person("Tom"),Person("Bob")).sorted
但是这个
case class Person(name: String) extends Ordered[Person] { def compare(that: Person) = this.name compare that.name }
按预期工作正常:
scala> List(Person("Tom"),Person("Bob")).sorted res12: List[Person] = List(Person(Bob),Person(Tom))
虽然没有涉及订单或牵连。
问题1:这里发生了什么? (我的钱是隐含的东西…)
但是,鉴于上述和以下事实:
scala> Person("Tom") > Person("Bob") res15: Boolean = true
作品也是这样的:
scala> List(Some(2),None,Some(1)).sorted
开箱即用:
res13: List[Option[Int]] = List(None,Some(1),Some(2))
我会期望这样:
scala> Some(2) > Some(1)
也可以工作,但是它没有:
<console>:6: error: value > is not a member of Some[Int] Some(2) > Some(1)
问题2:为什么不,如何让它上班?