プログラムで使用される特定のタイプのラッパーを作成しようとしています。また、これらすべてのタイプに、特性Ordered [T]を実装することにより、compareメソッドを持たせたいと思います。比較対象の型がOrdred[T]を暗黙的に実装していると判断するcompareメソッドの作成に問題があります。
現在の試み:
case class Value[T](someType: T) extends Ordered[T] {
def matches(otherType: T): Boolean = {
if(someType.getClass == otherType.getClass)
true
else false
}
override def toString() = {
someType.toString
}
def compare(other: T): Int = {
implicitly[Ordered[T]] compare other
}
}
object Value {
implicit def intVal(some: Int) = new Value[Int](some) {
def compare(other: Int): Int = someType compare other
}
implicit def doubleVal(some: Double) = new Value[Double](some) {
def compare(other: Double): Int = someType compare other
}
implicit def stringVal(some: String) = new Value[String](some) {
def compare(other: String): Int = someType compare other
}
implicit def boolVal(some: Boolean) = new Value[Boolean](some) {
def compare(other: Boolean): Int = someType compare other
}
implicit def dateVal(some: Date) = new Value[Date](some) {
def compare(other: Date): Int = someType.compareTo(other)
}
}
これは私が望む構造ですが、エラーが発生し続けます:
Could not find value for implicit parameter e: Ordered[T]
私が見逃している構文はありますか?