鉴于:
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:为什么不,如何让它上班?
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。