私のクラスはgenericであり、iv
をMHashMap[DateTime, T]
と定義しています。 MHashMap
はscala.collection.mutableHashMap
の別名です。それから私は、最低限の発見機能Int(Scala)でTに対して暗黙の順序付けが定義されていません
def minimum: BigDecimal = {
iv match {
case dtMcM: MHashMap[DateTime, MyCustomClass] => dtMcM.minBy(_._2.bdField)._2.bdField
case dtBdM: MHashMap[DateTime, BigDecimal] => dtBdM.minBy(_._2)._2
case dtDlM: MHashMap[DateTime, Double] => dtDlM.minBy(_._2)._2.toBigDecimal
case dtItM: MHashMap[DateTime, Int] => dtItM.minBy(_._2)._2
case _ => throw new IllegalArgumentException("Unsupported underlying type")
}
}
を公開するために、このコードを使用しますが、コンパイラは文句:
No implicit Ordering defined for T with Int.
case dtItM: MHashMap[DateTime, Int] => dtItM.minBy(_._2)._2
そしてDouble
とBigDecimal
例に同じ。
コンパイラがデフォルトの順序付けを適用するためにInt
を認識することさえできないのはどうですか?不思議なことは、自分のカスタムクラスのBigDecimalフィールドに問題があるように思われないことです。
エラーの原因はわかりませんが、上記のコードは残念ながらタイプ消去のために動作しません。型コンストラクタでのみ型パラメータに 'match'することはできません。 – Owen