Scala で適切に入力するのに問題があります。クラス階層に Ordered を課して、このようなことをしたいのですが、サブクラスを使用して、比較メソッドが独自の型のパラメーターでのみ機能するようにします。
abstract class Parent extends Ordered
class A extends Parent {
override def compare(that : A) = 1
}
class B extends Parent {
override def compare(that : B) = 1
}
以下は機能しますが、その場合、親とそのサブクラスに型の特異性を永遠に課すことを余儀なくされます。これは、正しく推論するための悪夢になります。
abstract class Parent[T <: Parent[_]] extends Ordered[T]
class A extends Parent[A] {
override def compare(that : A) = 1
}
class B extends Parent[A] {
override def compare(that : B) = 1
}
Ordered[T] のサブクラスで型を強制する簡単な方法はありますか?