如何在akka中过滤结果?

时间:2012-12-03 08:40:59

标签: scala filter akka

我有一个包含此Int列表的Future:List(40, 42, 41)。我尝试使用filter-function过滤它,因为我正常使用:f.filter(_ == 42)。 f是包含List的未来。我是从另一位演员那里得到的。执行时我得到这个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]])
  }

}

1 个答案:

答案 0 :(得分:2)

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

Await.result(f map { list => list filter { _ == 42 } })