簡體   English   中英

理解動態期貨列表:Scala

[英]For comprehension Dynamic List of Futures : Scala

我試圖用於理解以執行一系列的期貨清單。 一個未來的輸出成為下一未來的輸入。 下面是示例代碼。

for {
      x <- plugins(0).execute(input)
      y <- plugins(1).execute(x)
      z <- plugins(2).excute(y)
    } yield z

上面的代碼更像瀑布,每個插件(i)在某些輸入上執行,然后將輸出傳遞給下一個插件。 最后一個插件的輸出是最終輸出。 plugins是一個Seq of Plugin對象。 execute方法返回Future。 我想使上面的代碼更通用,其中Plugins中插件的數量是動態的。 我該如何實施它。

plugins.foldLeft(Future.successful(input)) { (resultFuture, plugin) =>     
  resultFuture.flatMap(plugin.execute(_))
}

此處使用兩種工具: foldLeftflatMap

查看這些鏈接,看看是否了解這些功能的作用

Future.successful只是將輸入包裝到Future中,以便我們可以像處理所有其他中間結果一樣對待它。 下划線是lambda函數參數的快捷方式。 編寫該片段的另一種方法是: resultFuture.flatMap { result => plugin.execute(result) }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM