scala – 如何将[Future [A],Future [B]]转换为Future [Aither [
发布时间:2020-12-16 08:55:07 所属栏目:安全 来源:网络整理
导读:我有一个[Future [A],Future [B]]的实例,我想将它转换为Future [Aither [A,B]]. 从my previous question开始,cats 0.8.1已经发布,改变了库的结构并放弃了Xor而选择了Either,这在2.12中是正确的. 因此,先前接受的答案中描述的方法不再起作用.我试图找到适当的
我有一个[Future [A],Future [B]]的实例,我想将它转换为Future [Aither [A,B]].
从my previous question开始,cats 0.8.1已经发布,改变了库的结构并放弃了Xor而选择了Either,这在2.12中是正确的. 因此,先前接受的答案中描述的方法不再起作用.我试图找到适当的导入但失败了. cats.instances.either._ cats.implicits._ cats.syntax.bitraverse._ 看起来似乎有道理,但不幸的是没有用.编译仍然失败,值为bisequence不是Either [scala.concurrent.Future [A],scala.concurrent.Future [B]]的成员 将导入扩展为* .all._并未更改编译器错误. 我在scala 2.11.8上,因为项目所依赖的所有库都没有发布2.12版本 解决方法
为了方便读者,我们从评论中汇编了答案:
1:你可以用普通的scala(在这里使用cats.Functor定义)来实现它,由@wheaties&提供. @让 – 菲利普的粒料 def eitherFmap[F[_],A,B](either: Either[F[A],F[B])(implicit F: Functor[F]): F[Either[A,B]] = either.fold(f => F.map(f)(Left(_)),f => F.map(f)(Right(_))) 2:由于进口冲突,猫的双序拒绝编译:这里单个导入就够了 – @kolmar友情提供 import cats.instances._ ... val futureOfEither = eitherOfFutures.bisequence 3:阅读cats import guide以避免将来出现问题 – @ peter-neyens礼貌 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |