Я создал две версии своего сервиса. Первый использует Futures
, другой использует ZIO
как эффект.
У меня есть простой метод, который использует Future
в качестве результата:
def get(id: String)(implicit executionContext: ExecutionContext): Future[Data]
У меня также есть другая версия, в которой используется ZIO[SomeEnv, SomeError, Data]
:
def get(id: String): ZIO[SomeEnv, SomeError, Data]
Теперь мне нужно создать какой-то адаптер, который будет возвращать данные из той или иной версии:
def returnDataFromServiceVersion(version: Int) : ??? = {
if(version == 1) futureService.get(...)
else zioService.get(...)
}
Проблема здесь в возвращаемом типе. Я не знаю, как преобразовать ZIO
в будущее или Future
в ZIO
, чтобы иметь общий тип возврата. Я пробовал использовать ZIO.fromFuture{...}
или toFuture()
, но это не помогло. У меня вопрос - как создать этот returnDataFromServiceVersion
метод, чтобы использовать его с обеими службами? Здесь мне нужен общий возвращаемый тип.
А может есть другой способ решить эту проблему?
ZIO
илиFuture
? Какие ошибки вы получили при попытке сделатьfromFuture
? - person paulpdaniels   schedule 01.07.2020