1

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

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)

如果我使用遍历

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

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

1 
2
5

并获取所有错误的列表

List("error 3", "error 4")

我怎样才能做到这一点?

4

1 回答 1

2

解决方案:

List.range(1, 6).traverse(print(_).attempt)
   .map(_.collect{case Left(x) => x})
于 2020-08-25T09:53:42.340 回答