Я хочу использовать класс типа для разработки интерфейса новообращенного и коды, как показано ниже:несколько параметров типа в тип класса
case class Kilograms(value: Double)
case class Pounds(value: Double)
trait Convert[T, U] {
def convert(input: T): U
}
object Convert {
def apply[T:Convert, U:Convert] = implicitly[Convert[T,U]]
def covert[T, U](input: T)(implicit c: Convert[T, U]): U = c.convert(input)
implicit object kilogramsToPounds extends Convert[Kilograms, Pounds] {
override def convert(input: Kilograms): Pounds = Pounds(input.value * 2.20462)
}
implicit object poundsToKilograms extends Convert[Pounds, Kilograms] {
override def convert(input: Pounds): Kilograms = Kilograms(input.value/2.20462)
}
}
Но компиляции ошибка:
Error: wrong number of type arguments for A$A95.this.Convert, should be 2
def apply[T:Convert, U:Convert] = implicitly[Convert[T,U]]
Error: could not find implicit value for parameter e: A$A95.this.Convert[T,U]
def apply[T:Convert, U:Convert] = implicitly[Convert[T,U]]
Error: not enough arguments for method implicitly: (implicit e: A$A95.this.Convert[T,U])A$A95.this.Convert[T,U].
Unspecified value parameter e.
def apply[T:Convert, U:Convert] = implicitly[Convert[T,U]]
Если изменить def apply[T:Convert, U:Convert] = implicitly[Convert[T,U]]
в def apply[T, U](implicit c: Convert[T, U]): Convert[T, U] = c
, нет ошибки компиляции !!!
Я хотел бы знать, что происходит? Кроме того, я просматриваю некоторую информацию, ограничение контекста ограничено параметром одиночного типа (?) Если я хочу реализовать несколько типов типа типа, как мне это сделать?