gpt4 book ai didi

scala - 展平 Scala 尝试

转载 作者:行者123 更新时间:2023-12-03 14:31:28 27 4
gpt4 key购买 nike

是否有一种简单的方法来展平一组 try 以给出尝试值的成功或失败?
例如:

def map(l:List[Int]) = l map {
case 4 => Failure(new Exception("failed"))
case i => Success(i)
}

val l1 = List(1,2,3,4,5,6)
val result1 = something(map(l1))

result1: Failure(Exception("failed"))

val l2 = List(1,2,3,5,6)
val result2 = something(map(l2))

result2: Try(List(1,2,3,5,6))

您将如何处理集合中的多个失败?

最佳答案

对于失败优先操作,这非常接近最小:

def something[A](xs: Seq[Try[A]]) =
Try(xs.map(_.get))

(到了您不应该费心创建方法的程度;只需使用 Try )。如果你想要所有的失败,一个方法是合理的;我会使用 Either :
def something[A](xs: Seq[Try[A]]) =
Try(Right(xs.map(_.get))).
getOrElse(Left(xs.collect{ case Failure(t) => t }))

关于scala - 展平 Scala 尝试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15495678/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com