映射列表的Scala未来
发布时间:2020-12-16 09:06:29 所属栏目:安全 来源:网络整理
导读:我有一份期货清单,我想逐一改造: def foo(x: A): Future[B] = {...}def mapFutures(xs: Future[List[A]]): Future[List[B]] 函数mapFutures应该使用foo转换列表的每个元素,并返回列表的未来.最好的方法是什么? 解决方法 你应该能够做你想做的事情(注意我将
我有一份期货清单,我想逐一改造:
def foo(x: A): Future[B] = {...} def mapFutures(xs: Future[List[A]]): Future[List[B]] 函数mapFutures应该使用foo转换列表的每个元素,并返回列表的未来.最好的方法是什么? 解决方法
你应该能够做你想做的事情(注意我将类型A和B指定为Int和String以使事情更容易理解):
def foo(x: Int): String = x.toString def mapFutures(xs: Future[List[Int]]): Future[List[String]] = { for(list <- xs) yield list map foo } 现在,如果你想要更通用的东西,那么你可以像这样定义mapFutures: def mapFutures[A,B](xs: Future[List[A]],f:A => B): Future[List[B]] = { for(list <- xs) yield list map f } 然后它可以像这样使用: val futs = Future(List(1,2,3)) val mappedFuts = mapFutures(futs,foo) 编辑 现在,如果foo返回Future,你可以这样做: def foo(x: Int): Future[String] = Future(x.toString) def mapFutures[A,f:A => Future[B]): Future[List[B]] = { for{ list <- xs mapped <- Future.sequence(list map f) } yield mapped } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |