Scala正确使用Try和Option组合在一起
我正在使用Scala正确使用Try和Option组合在一起,scala,Scala,我正在使用Try()包装对非100%可靠的第三方服务的调用,该服务返回某种类型的Option(),因此接收some(DataDto)或None 看起来是这样的: private def fetchData(): Option(DataDto) { val data: Try[Option[DataDto]] = Try(problematicService.getMeStuff()) data match { case Success(maybeDataDto)
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
}
}
实施此类行为的最佳方式是什么?我觉得这个实现太冗长了。您可以将
Try
转换为选项
并将其展平
Try(s.getMeStuff()).toOption.flatten