Scala:有条件的 For-Comprehension 与 Futures
Scala: Conditional For-Comprehension with Futures
我需要一个 for
理解来调用 N 方法,return 一个 Future[Int]
并且只产生奇数。以下代码不起作用,因为在第一个偶数结果之后块 returns a 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)
我需要一个 for
理解来调用 N 方法,return 一个 Future[Int]
并且只产生奇数。以下代码不起作用,因为在第一个偶数结果之后块 returns a 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)