我有一个等待未来结果的演员。调用未来的完成会导致编译器错误:
错误:构造函数无法实例化为预期类型 [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
}
}
不确定如何为此提供正确类型的参数。
答案 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) => ...
}