ZIO,从效果中提供环境

时间:2019-12-03 08:21:42

标签: 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,因为它是为理解而生成的。

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

1 个答案:

答案 0 :(得分:1)

您可以做xyz,为什么不呢?

通常,您可以执行.provide(configs)来运行效果io1.flatMap(io2.provide),然后将结果提供给另一个效果io1。甚至还有一个快捷方式:io2