Scala / akka模式匹配一​​系列期货流水线到演员的消息

时间:2013-11-15 11:17:26

标签: scala pattern-matching akka actor future

好的我正在尝试创建一个工作单元的Web请求,并在完成后将其传递给一个actor。我还不太了解匹配的问题,而且我正在试图找出一种方法来完成比赛。

我有一个与case _ : Seq[_]匹配的风格,我将如何使用 1)获得正确的案例类匹配器,在这种情况下Seq[SubcategoryResponse] 2)如何在匹配体内获得它的句柄?

val next_batch = Future.traverse(result.urls.get)(u => {
      val F = System.requester ? makeGetRequest(Root(),u.data)
      val F1 = F.map(f=> SubcategoryResponse(f.asInstanceOf[HttpResponse],u.payload.get,level+1))
      F1
    })
val res = Await result(next_batch, 20.seconds)
println(res.getClass)
res match {
  case _ : Seq[_] => {
    println("boom")
  }
}

编辑:宾果

简单语法:( - > m : Seq[SubcategoryResponse]。编译器警告不会让我觉得很舒服。所以我的新问题是,类型擦除在这种情况下意味着什么。我需要吗?认真对待这个警告?如果是这样,我该如何解决它?

[warn] /Users/hassan/code/scala/extractor/HonCrawler.scala:139: non-variable type argument HonCategoryBootstrap.this.SubcategoryResponse in type pattern Seq[HonCategoryBootstrap.this.SubcategoryResponse] is unchecked since it is eliminated by erasure
[warn]     case m : Seq[SubcategoryResponse] => {
[warn]              ^
[warn] one warning found

1 个答案:

答案 0 :(得分:2)

不是将Seq作为消息发送,而是将Seq包装在另一个类中。例如:

case class SubcategoryResponses(responses: Seq[SubcategoryResponse])

然后你可以匹配案例类:

res match {
  case SubcategoryResponses(responses) =>