如何遍历List [IO]以执行所有操作并收集所有错误?

问题描述

例如,我有一些错误的IO列表。

val time = LocalDateTime.now()

如果我使用遍历

def print(x: Int) = {
  if(x == 3 || x == 4) 
    IO.raiseError(new RuntimeException("error " + x))
  else 
    IO(println(x))
}

List.range(1,6).map(print)

它只打印1,2,我可以得到一个错误“错误3” 我想打印所有数字

List.range(1,6).map(print)

并获取所有错误列表

1 
2
5

我该怎么做?

解决方法

解决方案:

List.range(1,6).traverse(print(_).attempt)
   .map(_.collect{case Left(x) => x})

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...