怎么把它转换成zio?

pprl5pva  于 2021-07-14  发布在  Java
关注(0)|答案(1)|浏览(481)

我有一个返回类型为的简单方法签名 EitherT :

def run(someEither: Either[SomeException, Statement], id: String): EitherT[Future, EncodingException, ResultSet]

但更高级的方法有一个特征:

def someMethod(...) : zio.IO[SomeException, SomeResult]

我打电话来 run 方法内部 someMethod 这样地:

run(someEither, data.getOrElse("empty")).bimap(
      { e: SomeException => IO.fail(e) },
      _ => IO.succeed(entity)
    )

但我有个错误 Type mismatch -要求: IO ,找到: EitherT . 如何转换 EitherT 进入 zio.IO ?

trnvg8h3

trnvg8h31#

我想你可以这样做:

import zio._
import cats.data.EitherT
import scala.concurrent.Future

type ResultSet = ???

val eitherT: EitherT[Future, Exception, ResultSet] = ???
val result: IO[Throwable, ResultSet] = ZIO.fromFuture(_ => eitherT.value).flatMap(ZIO.fromEither)

相关问题