2013-11-15 51 views
0

好吧我试图创建一个工作单元的Web请求,并在完成时将其管道传输给演员。我不明白这个匹配的输入和输出是否足够好,我正在失去头发,试图想出一个办法来进行比赛。Scala/akka模式匹配一​​系列期货流水线到演员的消息

我有一个比赛的一个包罗万象的风格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 
+0

类型擦除意味着Scala中不能在此上下文中序号[SubcategoryResponse]和SEQ [AnythingElse]之间进行区分。欲了解更多信息[见本文](http://daily-scala.blogspot.com/2010/01/overcoming-type-erasure-in-matching-1.html)。 –

回答

2

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

case class SubcategoryResponses(responses: Seq[SubcategoryResponse]) 

然后就可以匹配的情况下类:

res match { 
    case SubcategoryResponses(responses) =>