ソート可能なデータ構造を実装するとき、私は次のようなことを考えていました:
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
}
私の質問は、比較を伴うクラス/特性に多くのメソッドがある場合、それらのメソッドの暗黙を宣言する必要がないように、クラス/特性の要素型を比較可能に指定する方法はありますか?