2013-11-15 50 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) =>