Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala正确使用Try和Option组合在一起_Scala - Fatal编程技术网

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