2017-09-08 5 views
0

ich com.twitter.util.Future verwende, scala 2.11.11Wie eine Zukunft einer Karte eines anderen Typs schaffen

Ich habe dieses Stück Code, das ich versuche, in eine Zukunft zu konvertieren [Map [Long, String]]

val simpleMap: Map[Long, Int] = Map(1L -> 2, 2L -> 4) 
val keyToNewFutureMap = Future.collect(simpleMap.map { 
    case (key, value) => 
     val newFuture = getAFutureFromValue(value) 

     key -> newFuture 
    }.toSeq.toMap 
) 

val keyToFutureMap = Map(1L -> Future.value(1)) 
val futureMap = Future.collect(keyToFutureMap) // converts into a 
Future[Map[Long, Int]] 

Future.collect(Seq(futureMap, keyToNewFutureMap)) // Stuck here 

Ich stecke hier fest. Ich wollte die zurückgegebenen Karten von beiden Futures verwenden und eine neue Karte erstellen. Die neue Karte enthält eindeutige Schlüssel, die sowohl in futureMap als auch in keyToNewFutureMap erscheinen.

keyToFutureMap wird in Form eines Map[Long, Future[Option[Int]]] gegeben, weshalb ich eine collect verwendet es in ein Jede Hilfe ist geschätzt Future[Map[Long, Int]]

einzuschalten.

+0

Sie wollen ein '' Future' Map' von 'OLDKEY -'> Ergebnis getAFutureFromValue (Wert)? –

Antwort

0

Wenn ich richtig verstanden habe, wollen Sie dies:

val newFutureMap = Future.traverse(simpleMap) { 
    case (key, value) => 
    getAFutureFromValue(value).map(key -> _) 
}.map(_.toMap) 
Verwandte Themen