gpt4 book ai didi

scala - 如何将成功的 Iterable[Try[U]] 过滤器转换为 Iterable[U]?

转载 作者:行者123 更新时间:2023-12-04 19:31:08 25 4
gpt4 key购买 nike

我试过

val tryValues : Iterable[Try[Int]] = ...
val successValues = tryValues.filter(_.isSuccess).map(_.get)

但编译器警告 map 可能会抛出异常。
有什么方法可以免警告吗?

最佳答案

您要使用 collect模式匹配所有 Success 的值,并丢弃其他任何东西。

val successValues: List[Int] = tryValues collect { case Success(x) => x }
collect接受 PartialFunction作为论据。来自 PartialFunction 的集合中的任何值定义为将被映射,其余的将被丢弃。

例子:
scala> val tryValues = List(1, 1, 0, 1, 1).map(x => Try(1 / x)) 
tryValues: List[scala.util.Try[Int]] = List(Success(1), Success(1), Failure(java.lang.ArithmeticException: / by zero), Success(1), Success(1))

scala> val successValues = tryValues collect { case Success(x) => x }
successValues: List[Int] = List(1, 1, 1, 1)

关于scala - 如何将成功的 Iterable[Try[U]] 过滤器转换为 Iterable[U]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29801521/

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