在实现可排序的数据结构时,我正在考虑做这样的事情:
trait MaxHeap[T <: Ordering[T]] {
def insert(e: T): Unit
...
}
但这不适用于像 MaxHeap[Int] 这样的类型。在标准集合库中,集合的元素类型 T 是无界的。相反,为需要将 T 转换为 Ordering[T] 的方法提供了隐式,例如
trait Seq[+A] extends ... {
// it's Ordering[B], not Ordering[A], but the idea is the same.
def max[B >: A](implicit cmp: Ordering[B]): A
}
我的问题是,如果我的类/特征中有很多涉及比较的方法,有没有办法指定类/特征的元素类型是可比较的,这样我就不需要为这些方法声明隐含?