相关疑难解决方法(0)

将List [Either [A,B]]转换为Either [List [A],List [B]]

如何转换List[Either[String, Int]]Either[List[String], List[Int]]使用类似于cats sequence的方法?例如, xs.sequence在以下代码中

import cats.implicits._
val xs: List[Either[String, Int]] = List(Left("error1"), Left("error2"))
xs.sequence
Run Code Online (Sandbox Code Playgroud)

返回,Left(error1)而不是required Left(List(error1, error2))

凯文·赖特的答案表明

val lefts = xs collect {case Left(x) => x }
def rights = xs collect {case Right(x) => x}
if(lefts.isEmpty) Right(rights) else Left(lefts)
Run Code Online (Sandbox Code Playgroud)

哪个返回Left(List(error1, error2)),但是猫是否提供开箱即用的排序方式来收集所有剩余数据?

scala scala-cats

7
推荐指数
1
解决办法
227
查看次数

在Scala中将List [Try [T]]尝试为[List [T]]

我想知道如何在Scala中将List [Try [T]]转换为Try [List [T]]?

我已经尝试过使用累加器并向右折叠,但这似乎并不理想。

functional-programming scala scalaz scala-cats

3
推荐指数
2
解决办法
122
查看次数