2017-11-09 3 views
0

Vector[(Future[TypeA], TypeB)]をここに入力コードFuture[Vector[(TypeA, TypeB)]]に変換する方法を探しています。スカラ:未来を含むタプルのベクトルをタプルのベクトルの未来に変換する

将来のコレクションをFuture.sequence(...)を使用して将来のコレクションに変換することは承知していますが、未来のタプルから未来のタプルへステップを管理する方法を見つけることはできません。

私はダミーextractFutureFromTupleの望ましい機能を実装するものを探しています。あなたはFuture.traverseに1回の呼び出しでこれを行うことができます

val vectorOfTuples: Vector[(Future[TypeA], TypeB)] = ... 
val vectorOfFutures: Vector[Future[(TypeA, TypeB)]] = vectorOfTuples.map(_.extractFutureFromTuple) 
val futureVector: Future[Vector[(TypeA, TypeB)]] = Future.sequence(vectorOfFutures) 
+0

'タプル=> tuple._1.map(_ - > tuple._2)完璧' – Dima

+0

、やりましたトリック!どうもありがとう – DentArthurDent

答えて

2

注:

val input: Vector[(Future[Int], Long)] = ??? 
val output: Future[Vector[(Int, Long)]] = Future.traverse(input) { 
    case (f, v) => f.map(_ -> v) 
} 
関連する問題