scala – 如何在List [F [G [A]]]上运行序列以获得F [G [List [A
发布时间:2020-12-16 19:14:31 所属栏目:安全 来源:网络整理
导读:是否可以很好地将List [F [G [A]]]转换为F [G [List [A]]]? 我可以通过以下方式在Scalaz中执行此操作: val x: List[Future[Option[Int]]] = ???val transformed: Future[Option[List[Int]]] = x.sequenceU.map(_.sequenceU) 我只是想知道是否有更好的方法
是否可以很好地将List [F [G [A]]]转换为F [G [List [A]]]?
我可以通过以下方式在Scalaz中执行此操作: val x: List[Future[Option[Int]]] = ??? val transformed: Future[Option[List[Int]]] = x.sequenceU.map(_.sequenceU) 我只是想知道是否有更好的方法来做这个而不是.sequenceU.map(_.sequenceU)也许使用monad变换器?我确实尝试了这个,没有太多运气. 解决方法
如果你想避免嵌套测序,Monad变换器是你要走的路.在这种情况下,您需要OptionT [Future,A](相当于Future [Option [A]]):
import scalaz._,Scalaz._ import scala.concurrent.ExecutionContext.Implicits.global import scala.concurrent.Future val xs = List(OptionT(Future(some(1))),OptionT(Future(some(2)))) val ys = OptionT(Future(none[Int])) :: xs val sequencedXs: Future[Option[List[Int]]] = xs.sequenceU.run val sequencedYs: Future[Option[List[Int]]] = ys.sequenceU.run 然后: scala> sequencedXs.foreach(println) Some(List(1,2)) scala> sequencedYs.foreach(println) None 正如所料. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- WebService(2)_WSDL文档
- 传智播客webService第(二-三)天课堂笔记
- 解决linux下openoffice word文件转PDF中文乱码的问题
- shell整理(30)====嵌套循环shell写找勾股数和shift命令
- AngularJS 动态加载控制器实例-ocLoazLazy(二)
- angular4 http RxJS Observable observer演示
- (SystemJS) Can't resolve all parameters for
- xfire获取客户端IP地址
- webservice cxf -- 基于soap方式开发(一)
- 如何使用反射来调用Scala Object方法?