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]

它给出了行号吗?它给出了行号吗?