如何遍历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})