【发布时间】:2019-02-06 18:06:08
【问题描述】:
我想让我的案例类 Event[K, V] 始终按键 K 排序。但我需要能够比较不同值的事件V。如何解决这种发散的隐式展开?
import scala.math.Ordering
object Event {
case class Event[K, V](key: K, value: V)
(implicit o: Ordering[K]) extends Ordered[Event[K, _]] {
override def compare(that: Event[K, _]): Int = o.compare(key, that.key)
}
}
object Main extends App {
// mimicking a librarys function
def lala[O](e: O)(implicit ordering: Ordering[O]) = ???
val b = Event.Event("a", 12) <= Event.Event("a", 11.99)
lala(Event.Event("a", 12))
}
由于这种发散的隐式扩展,对lala 的调用无法编译:
diverging implicit expansion for type
scala.math.Ordering[Event.Event[String,Int]] starting with method $conforms
in object Predef lala(Event.Event("a", 12))
【问题讨论】: