2015-01-12 6 views
2

Если у меня есть List[Try[A]] в Scala, то какой идиоматический способ отфильтровать значения Failure(t)?Идиоматический способ фильтрации Ошибки (t) в Scala

Один из способов заключается в использовании следующих:

val someList: List[Try[String]] = ... 
someList.filter(_.isFailure) 

Есть ли более «идиоматическое» способом, например, используя flatten? Это выглядит довольно просто.

ответ

8

Если вы хотите, чтобы получить все исключения, вы могли бы использовать collect так:

someList.collect{ case Failure(t) => t } 
// List[Throwable] 

Если вы хотите, чтобы получить весь успех результатов, которые вы могли бы использовать flatMap или collect:

someList.flatMap{ _.toOption } 
// List[String] 

someList.collect{ case Success(s) => s } 

 Смежные вопросы

  • Нет связанных вопросов^_^