Scala / Akka Future onComplete Success编译器错误

时间:2014-04-09 15:41:36

标签: scala akka actor future

我有一个等待未来结果的演员。调用未来的完成会导致编译器错误:

  

错误:构造函数无法实例化为预期类型   [scalac]发现:akka.actor.Status.Success      [scalac]必需:scala.util.Try [Iterable [Any]]      [scalac] case成功(结果:List [PCBInstanceStats])=> {      [scalac] ^

演员收到:

case "pcbStatus" => {
      val future = Future.traverse(context.children)(x => {
        (x ? "reportStatus")(5 seconds)
      })

      future.onComplete {
        case Success(result: List[PCBInstanceStats]) => {
          self ! result
        }
      }

不确定如何为此提供正确类型的参数。

1 个答案:

答案 0 :(得分:11)

[scalac] found : akka.actor.Status.Success 

这意味着编译器会看到您的Success并认为它是akka.actor.Status.Success,而实际上您的意思是scala.util.Success。您可能在导入akka Success类的某处导入。

删除akka.actor.Status.Success的导入,或通过完全限定类或使用导入别名来解决歧义,例如

import scala.util.{Success => ScalaSuccess}

future.onComplete {
  case ScalaSuccess(result) => ...
  // or
  case scala.util.Success(result) => ...
}