University
muss Building[T]
erstreckt sich nicht Building
case class University[T](a: Building[T], b: Building[T], c: T) extends Building[T]
Dies ist die komplette Code
abstract class Building[T]
case class University[T](a: Building[T], b: Building[T], c: T) extends Building[T]
In u
Funktion Ausgangstyp ist Building[B]
. Sie geben University[B]
zurück Aber University[B]
dauert eine, die Building[B]
b ist, die wieder Building[B]
und c
ist, die B
ist.
n.a
kehrt Building[A]
nicht Building[B]
um University[B]
nimmt zwei Building[B]
und ein B
. Sie können n.a
, n.b
und n.c
nicht übergeben, um university[B]
zu erstellen.
Um den Code zu Kompilierung machen Ich habe den Ausgabetyp geändert und wiederkehr University[B]
def u[A,B](a: Building[A]): Building[A] = a match {
case n: University[A] => University[A](n.a, n.b, n.c);
}
Korrekter Code
abstract class Building[T]
case class University[T](a: Building[T], b: Building[T], c: T) extends Building[T]
def convert[A, B](a: A): B = ???
def bConvert[A, B](building: Building[A]): Building[B] = ???
def u[A,B](a: Building[A]): Building[B] = a match {
case n: University[A] => University[B](bConvert(n.a), bConvert(n.b), convert(n.c));
}