2016-12-29 35 views
-6

我无法理解如何在将来使用flatMap。 '因为'看起来很好。在期货中使用flatmap的示例

object ConcurrencyExample extends App { 
val gpf= Future {gpf operations} 
val ccf = Future{ccf operations} 

//how can I convert this for to flatMap? 
val atbf = for {g <- gpf 
c <- ccf } yield {atbf operations} 

Await.result(atbf,1000 millis) 
} 
+0

'gpf.flatMap {_ => CCF} .MAP {_ => ATBF }' – Dima

回答

1

的理解可以去加糖入mapflatMapfilter

这里是你如何做到这一点。

for { 
    foo <- FooF 
    bar <- BarF(foo) 
    baz <- BazF if bar > 0 
    bow <- BowF(baz) 
} yield (baz + 1) 

上述事情可被转化为

FooF.flatMap { foo => //inner bindings become flatMap 
    BarF(foo).flatMap { bar => 
    BazF.filter { baz => baz > 0 } //guards become filter 
    .flatMap { baz => 
     BowF(baz) 
    }.map { baz => baz + 1 } // yield becomes map 
    } 
} 

所以你换理解变得

gpf.flatMap { _ => ccf }.map { _ => atbf }