一連のエラーまたはビューがあります ( Seq[Xor[Error,View]]
)
Xor[Error, Seq[View]]
これを最初のエラー (ある場合) またはビューのシーケンス ( ) または単に ( Xor[Seq[Error],Seq[View]
)の Xor にマップしたい
これどうやってするの?
一連のエラーまたはビューがあります ( Seq[Xor[Error,View]]
)
Xor[Error, Seq[View]]
これを最初のエラー (ある場合) またはビューのシーケンス ( ) または単に ( Xor[Seq[Error],Seq[View]
)の Xor にマップしたい
これどうやってするの?
Cats の最新バージョンでXor
は削除され、現在は標準の ScalaEither
データ型が使用されています。
sequence
Michael Zajac は、 or sequenceU
(実際にはTraverse
notで定義されてBitraverse
いる) を使用して を取得できることを正しく示しましたEither[Error, List[View]]
。
import cats.implicits._
val xs: List[Either[Error, View]] = ???
val errorOrViews: Either[Error, List[View]] = xs.sequenceU
ほとんどの場合、 の代わりに使用できる( aと a のtraverse
ような)を見たいと思うかもしれません。map
sequence
sequence
失敗するすべてのエラーが必要な場合は、 を使用できませんが、 (またはの単なる型エイリアスである をEither
使用できます) 。Validated
ValidatedNel
Validated[NonEmptyList[A], B]
import cats.data.{NonEmptyList, ValidatedNel}
val errorsOrViews: ValidatedNel[Error, List[View]] = xs.traverseU(_.toValidatedNel)
val errorsOrViews2: Either[NonEmptyList[Error], List[View]] = errorsOrViews.toEither
次を使用して、エラーとビューを取得することもできMonadCombine.separate
ます。
val errorsAndViews: (List[Error], List[View]) = xs.separate