University
はここBuilding[T]
だけでなくBuilding
case class University[T](a: Building[T], b: Building[T], c: T) extends Building[T]
を拡張する必要がありますu
機能出力タイプで、完全なコード
abstract class Building[T]
case class University[T](a: Building[T], b: Building[T], c: T) extends Building[T]
がBuilding[B]
です。あなたはUniversity[B]
を返していますが、University[B]
はBuilding[B]
bです。これもまたBuilding[B]
とc
です。これはB
です。
n.a
戻るBuilding[A]
ないBuilding[B]
University[B]
は、二つのBuilding[B]
一B
を取るように。 n.a
、n.b
およびn.c
にはuniversity[B]
を作成することはできません。
は、私は、出力タイプと返す
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);
}
正しいコード
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));
}
を変更したコードのコンパイルを作成するには