Scala将Map [Int,Future [Seq [T]]]转换为Future [Map [Int,Seq
发布时间:2020-12-16 09:07:25 所属栏目:安全 来源:网络整理
导读:我怎样才能改变一个 Map[Int,Future[Seq[T]]] 至 Future[Map[Int,Seq[T]]] 在Scala没有等待未来. 例: Map( 1 - Future.successful(Seq(100,200,300)),2 - Future.successful(Seq(500,600,700))) 解决方法 这应该这样做: val m = Map( 1 - Future.successfu
我怎样才能改变一个
Map[Int,Future[Seq[T]]] 至 Future[Map[Int,Seq[T]]] 在Scala没有等待未来. 例: Map( 1 -> Future.successful(Seq(100,200,300)),2 -> Future.successful(Seq(500,600,700)) ) 解决方法
这应该这样做:
val m = Map( 1 -> Future.successful(Seq(100,700)) ) Future.sequence { m.map { case (i,f) => f.map((i,_))} }.map(_.toMap) 从内到外,我将键值从(Int,Future [T])映射到Future [(Int,T)],然后能够在结果序列的Futures上使用Future.sequence.然后,折叠后的Future可以映射回Map. 使用@ IonutG.Stan建议的Future.traverse可以稍微缩短一下: Future.traverse(m){ case (i,_))}.map(_.toMap) 这将在m中构建一个Future的新集合,使用前面提供的相同函数将元组与期货映射到未来元组. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |