Предположим, у меня есть функция op: (Int, Int) => Future[Int]
и мне нужно написать новую функцию foo
:
def foo(xs: Seq[Int],
zero: Int,
op: (Int, Int) => Future[Int]): Future[Int] = ???
foo
должно работать как foldLeft
и применять op
последовательно ко всемэлементы в xs
, например:
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
?