0

我已经定义了这些类。

trait ResultTrait {
}
case class PostResult (
  @Key("_id") id: String,
  success: String,
  errors: Seq[String] = Seq.empty
) extends ResultTrait

case class PostError (
  message: String,
  errorCode: String
) extends ResultTrait

这不会编译。它给出错误“必需的 T,但发现 PostResult(或 PostError)”。

def postLead[T <: SFDCResult](accessToken: AccessToken):
        Future[T] = {
     // depends on response from request, return PostResult or PostError
}
4

1 回答 1

1

正如@Travis Brown 已经说过的那样,看起来您正试图通过泛型表达返回类型的可变性(即“它是 aPostResult或 a PostError”),而实际上您只需要父特征。

假设您SDFCResult是要使用的匿名化错误ResultTrait,我将使用以下内容:

// Make the trait sealed so we can only have our two known implementations:
sealed trait ResultTrait {}
...
// Two subclasses as before

然后你的方法应该是:

def postLead(accessToken: AccessToken):Future[ResultTrait] = {
  // depends on response from request, return PostResult or PostError
}  
于 2015-04-13T06:44:44.023 回答