我创建了两个版本的服务。第一个使用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{...}
ortoFuture()
但它没有帮助。我的问题是 - 如何创建此returnDataFromServiceVersion
方法以将其与两种服务一起使用?我需要在这里有共同的返回类型。
或者也许有另一种方法来解决这个问题?