Scala 无法解析符号A
我有以下特点:Scala 无法解析符号A,scala,Scala,我有以下特点: sealed trait Sum[+A, +B] final case class Failure[A](value: A) extends Sum[A, Nothing] final case class Success[B](value: B) extends Sum[Nothing, B] object Sum { def flatMap[AA >: A, B, C](s: Sum[AA, B], f: B => Sum[AA, C]): Sum[A
sealed trait Sum[+A, +B]
final case class Failure[A](value: A) extends Sum[A, Nothing]
final case class Success[B](value: B) extends Sum[Nothing, B]
object Sum {
def flatMap[AA >: A, B, C](s: Sum[AA, B], f: B => Sum[AA, C]): Sum[AA, C] =
s match {
case Failure(v) => Failure(v)
case Success(v) => f(v)
}
def fold[A, B, C](s: Sum[A, B], success: A => C, failure: B => C): C =
s match {
case Failure(v) => failure(v)
case Success(v) => success(v)
}
def map[A, B, C](s: Sum[A, B], success: A => C): Sum[A,C] =
fold(s, succ => Success(success(succ)), fail => Failure(fail))
}
而编译器则抱怨:
Cannot resolve symbol A
作者:
我做错了什么
我做错了什么
您正在为不存在的类型参数定义下限。在这种情况下,什么是A?您告诉编译器我希望AA具有类型a的下限,但是编译器不知道泛型类型参数a,因为它没有声明
如果希望有两个类型参数,其中一个是另一个的下界,或者更一般地说是任何下界,则需要首先声明它:
def flatMap[A, AA >: A, B, C]
我做错了什么
您正在为不存在的类型参数定义下限。在这种情况下,什么是A?您告诉编译器我希望AA具有类型a的下限,但是编译器不知道泛型类型参数a,因为它没有声明
如果希望有两个类型参数,其中一个是另一个的下界,或者更一般地说是任何下界,则需要首先声明它:
def flatMap[A, AA >: A, B, C]
它给出了行号吗?它给出了行号吗?