gpt4 book ai didi

scala - Cats Seq[Xor[A,B]] => Xor[A, Seq[B]]

转载 作者:行者123 更新时间:2023-12-04 22:43:03 27 4
gpt4 key购买 nike

我有一系列错误或 View ( Seq[Xor[Error,View]] )

我想将其映射到第一个错误(如果有)或 View 序列的异或
( Xor[Error, Seq[View]] ) 或者可能只是 ( Xor[Seq[Error],Seq[View] )

我怎样才能做到这一点?

最佳答案

您可以使用 sequenceU 语法提供的 bitraverse,类似于使用 scalaz。虽然 Seq 似乎不存在正确的类型类,但您可以使用 List

import cats._, data._, implicits._, syntax.bitraverse._

case class Error(msg: String)

case class View(content: String)

val errors: List[Xor[Error, View]] = List(
Xor.Right(View("abc")), Xor.Left(Error("error!")),
Xor.Right(View("xyz"))
)

val successes: List[Xor[Error, View]] = List(
Xor.Right(View("abc")),
Xor.Right(View("xyz"))
)

scala> errors.sequenceU
res1: cats.data.Xor[Error,List[View]] = Left(Error(error!))

scala> successes.sequenceU
res2: cats.data.Xor[Error,List[View]] = Right(List(View(abc), View(xyz)))

关于scala - Cats Seq[Xor[A,B]] => Xor[A, Seq[B]],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40370342/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com