如何归还任一者的权利

Moj*_*ojo 0 scala

我有一个这种类型的值:

List[Either[Error, Files]]
Run Code Online (Sandbox Code Playgroud)

我有一个函数可以检查是否存在这样的错误:

  private def process(result: List[Either[Error, Files]]): Either[Error, List[Files]] = {
    if(result.exists(p => p.isLeft)){
      Left(Error("some downloads failed"))
    }else{
      Right(
      Right(
        result.collect {
          case Right(value) => value
        }
      )

    }

  }
Run Code Online (Sandbox Code Playgroud)

如果结果没有错误,这是返回文件列表的最佳方法吗?

Iva*_*Kam 5

有一个cats库具有sequence执行此类操作的扩展方法 https://gist.github.com/gbersac/14114f8bf8d0b1c6ea455aacdee0fcd8