假设我有一个函数
op: (Int, Int) => Future[Int]
,需要编写一个新函数 foo
:def foo(xs: Seq[Int],
zero: Int,
op: (Int, Int) => Future[Int]): Future[Int] = ???
foo
应该像 foldLeft
一样对 xs
中的所有元素按顺序应用 op
,例如:
val op: (Int, Int) => Future[Int] = (x, y) => Future(x + y)
val xs = (1 to 10)
val fut = foo(xs, 0, op) // should return Future of 55
fut.value // Some(Success(55))
你如何实现foo
?
cats
很有用,但我现在更喜欢一个纯Scala的解决方案。 - Michael