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 ответ
Ты можешь сделать .provide(configs)
, почему бы нет?
В более общем плане вы можете сделать io1.flatMap(io2.provide)
запустить эффект io1
а затем предоставить результат другому эффекту io2
. Для этого есть даже ярлык:io1 >>> io2
.