我正在使用Try()
来包含对非100%可靠的第三方服务的调用,该服务会返回某种类型的Option()
因此接收Some(DataDto)
或None
所以它看起来像这样:
private def fetchData(): Option(DataDto) {
val data: Try[Option[DataDto]] = Try(problematicService.getMeStuff())
data match {
case Success(maybeDataDto) => {
maybeDataDto match {
case Some(dataDto) => Some(dataDto)
case None => None
}
}
case Failure(_) => None
}
}
实施此类行为的最佳方式是什么?我觉得这个实现是冗长的。
答案 0 :(得分:3)
您可以将Try
转换为Option
和flatten
。
Try(s.getMeStuff()).toOption.flatten