当前位置:  开发笔记 > 编程语言 > 正文

理解动态期货清单:Scala

如何解决《理解动态期货清单:Scala》经验,为你挑选了1个好方法。

我试图用于理解来执行系列期货列表.一个未来的输出成为下一个未来的输入.下面是示例代码.

for {
      x <- plugins(0).execute(input)
      y <- plugins(1).execute(x)
      z <- plugins(2).excute(y)
    } yield z

上面的代码更像是一个瀑布,每个插件(i)在一些输入上执行,并将输出传递给下一个插件.最后一个插件的输出是最终输出.plugins是一个Seq of Plugin对象.execute方法返回Future.我想使上面的代码更通用,其中插件中的插件数量是动态的.我该如何实现它.



1> Dima..:
plugins.foldLeft(Future.successful(input)) { (resultFuture, plugin) =>     
  resultFuture.flatMap(plugin.execute(_))
}

这里使用了两种工具:foldLeftflatMap

看看这些链接,看看你是否理解这些功能的作用

Future.successful只需将输入包装到Future中,这样我们就可以像处理所有其他中间结果一样对待它.下划线是lambda函数参数的快捷方式.写这篇文章的另一种方法是:resultFuture.flatMap { result => plugin.execute(result) }.

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有