抽象クラスにジェネリックTのリストがあります。抽象的な型の暗黙の順序付け
abstract class MyAbstractClass[T] {
type SortOrder
def getSorterFunc(): T => SortOrder
def sort(myList: List[T]) = {
val sortFunc = getSorterFunc()
myList.sortBy(sortFunc)
}
}
object SampleObject extends MyAbstractClass[(String,Int,List[Int])] {
type SortOrder = (String,Int)
override def getSorterFunc(): (String,Int,List[Int]) => SortOrder {
val sortFunc : (String,Int,List[Int]) => SortOrder = {
case (username, id, addresses) => (username, id)
}
sortFunc
}
}
抽象クラスから多くの派生クラスがあります。 リスト[T]でカスタムソートを行いたい。これを達成する方法は? 上記のコードはコンパイルエラーをスローします。
No implicit Ordering defined for MyAbstractClass.this.SortOrder.
一見すると、 'getSorterFunc'は' SampleObject'に定義されていない 'T'を返すので、これはどのようにコンパイルすることができません。 – slouc
これは間違いです。私はそれを修正しました。 – Knight71