我在Scala有一个Seq [T],并且想要对每个元素做些什么。在成功的情况下,我希望将结果交给Seq创建并理解,但我不想在异常情况下产生任何结果。斯卡拉在成功的情况下产出,但不在例外情况下
我想是这样的:
val destinations = for(path <- files) {
try {
yield tryReadDestinations(path)
} catch {
case _ => log.error("Error happened :(")
}
}
但当然
这样的代码不能编译。我怎样才能实现这样的事情?UPDATE:
我设法让这样的事情:
files
.map(a => tryExtractDestinationsFromAttachment(a))
.filter {
case Success(d) => true
case Failure(_) => false
}
.map(t => t.get)
.flatten
tryExtractDestinationsFromAttachment返回Try[String]
,但我相信这是可能使它simplier /更具可读性?
你期望什么结果?如果成功搜集结果并在任何时候出现失败,其原因是什么? (全部或全部)? – maasg