簡體   English   中英

Scala:對期貨的有條件理解

[英]Scala: Conditional For-Comprehension with Futures

我需要一個for理解,該方法調用N個返回Future[Int]並僅產生奇數的方法。 以下代碼不起作用,因為在第一個偶數結果之后,該塊返回了Failure

import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global

def f1 = Future(1)
def f2 = Future(2)
def f3 = Future(3)
def f4 = Future(4)

for {
  i1 <- f1 if i1 % 2 != 0
  i2 <- f2 if i2 % 2 != 0
  i3 <- f3 if i3 % 2 != 0
  i4 <- f4 if i4 % 2 != 0
} yield ???

如何獲得以下結果?

List[Future(1), Future(3)]

這樣的事情可以代替嗎?

val futures = List(f1, f2, f3, f4)
Future.sequence(futures).map(_.filter(_ % 2 != 0))

結果是

List(1, 3)

暫無
暫無

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

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