ZIO,从效果中提供环境

  • 本文关键字:环境 ZIO scala zio
  • 更新时间 :
  • 英文 :


ZIO开始,我正在尝试将现有的应用程序转换为纯功能应用程序。此应用程序依赖于 Http 和 Frp 客户端。它们都是从配置文件和可选的命令行参数配置的。

当前流解析参数,然后读取配置文件并合并两者。生成的Configuration将传递给某些需要 Http 和 Ftp 客户端的组件。

现在,如果我想将其转换为 ZIO,我可以天真地创建这样的流程:

val flow = for {
options <- ZIO.succeed("Options")
configs <- ZIO.succeed(s"Config + $options")
result  <- ZIO.succeed("...") // This require the "configs"
} yield ()

不幸的是,我无法提供configs,因为它是用于理解本身的。

我的问题是:我们如何提供一种效果作为环境的结果?

你可以做.provide(configs),为什么不呢?

更一般地说,您可以执行io1.flatMap(io2.provide)来运行效果io1,然后将结果提供给另一个效果io2。甚至还有一个捷径:io1 >>> io2.

相关内容

  • 没有找到相关文章

最新更新