0

我有一个包含这个 Int 列表的 Future: List(40, 42, 41)。我尝试使用我通常使用的过滤器功能对其进行过滤:f.filter(_ == 42). f 是包含列表的未来。我是从另一个演员那里得到的。在执行时,我得到了这个 MatchError:

[ERROR] [12/03/2012 09:37:34.252] [playground-akka.actor.default-dispatcher-1] [akka://playground/user/sender] List(40, 42, 41) (of class scala.collection.immutable.$colon$colon)
scala.MatchError: List(40, 42, 41) (of class scala.collection.immutable.$colon$colon)

我不明白这个错误,也无法修复它。任何人都可以帮助我吗?

编辑

这是一段代码:

case class Send(target: ActorRef, msg: String)

class SendingActor extends Actor with ActorLogging {

  implicit val timeout = Timeout(1 second)

  def receive = {
    case Send(target, msg) =>
      log.info("will send %s".format(msg))
      val f = target ? msg
      log.info("awaited " + Await.result(f.filter(_ == 42), timeout.duration).asInstanceOf[List[Int]])
  }

}
4

1 回答 1

2

您正在尝试通过在整数列表的未来调用过滤器来过滤整数列表。您需要先“解压”列表。

Await.result(f map { list => list filter { _ == 42 } })
于 2012-12-03T09:14:20.170 回答