2015-09-21 36 views
0

我有以下代碼:SCALA - 表達(爲{}收率x)是類型未來[未來[..]]代替預期未來[..]

val futureWithResult = for{files <- scanFiles(dir) 
          res <- procFiles(files)}yield res 

RES是Future[...]類型的,爲什麼這個聲明返回Future[Future[..]] ?? 在我的程序中,我需要futureWithResult爲Future[...]。爲什麼我的收益代碼將res的類型包裝到另一個Future[]

+0

scanFiles和procFiles方法的返回類型是什麼? –

+0

scanFiles - Seq [String] procFiles - Future [Seq [(String,Int)]] [。 。 。]在我的問題代表類型Seq [(String,Int)] – DorianOlympia

+0

@DorianOlympia,給定類型'scanFiles:Seq [String]'和'procFiles:Future [Seq [(String,Int)]]'你不能寫一個理解,因爲'scanFiles'的'flatMap'需要一個'GenTraversableOnce'值,而未來值不是。因此,你的代碼不應該編譯。 –

回答

0

我找到了答案。問題的確是錯誤的類型(準確地說,與水庫類型有關)。它是Future[Seq[(String, Int)]]而不是Seq[(String, Int)]問題在於我錯誤地將procFiles(它返回Future [...])包裝到另一個Future中。謝謝各位的評論!

+0

你可以接受你自己的答案,以防止他人不必要地做出這些。 –