Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.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';s表示对未来[选项]的理解,无例外_Scala_Optional_Future_For Comprehension - Fatal编程技术网

Scala';s表示对未来[选项]的理解,无例外

Scala';s表示对未来[选项]的理解,无例外,scala,optional,future,for-comprehension,Scala,Optional,Future,For Comprehension,我有一个未来的[Option[String]]函数。只有当future成功并且字符串存在时,我才需要得到一个转换后的字符串。在其他情况下,我只需要得到一个None(无任何错误或异常) 我尝试使用理解(以及贴图/平面贴图),但显然我的结果是键入Nothing而不是Option[String] def getOption: Option[String] def getOptionResult: Future[Option[String]] def someActions: String val r

我有一个未来的[Option[String]]函数。只有当future成功并且字符串存在时,我才需要得到一个转换后的字符串。在其他情况下,我只需要得到一个None(无任何错误或异常)

我尝试使用理解(以及贴图/平面贴图),但显然我的结果是键入Nothing而不是Option[String]

def getOption: Option[String]
def getOptionResult: Future[Option[String]]
def someActions: String

val resultO: Option[String] = for {
  myString: String <- getOption
  optionResult: Option[String] <- getOptionResult
  result: String <- optionResult
} yield {
  someActions(result)
}
def getOption:Option[String]
def getOptionResult:Future[选项[字符串]]
def someActions:String
val resultO:选项[字符串]=用于{
myString:String试试这个

import scala.concurrent._
import scala.concurrent.duration._
import scala.concurrent.ExecutionContext.Implicits.global

 def getOptionResult: Future[Option[String]] = Future(Some("Foo"))
 //    def getOptionResult: Future[Option[String]] = Future(None)

val d = getOptionResult.map(a => a.map(r => "(" + r + ")"))

val res = Await.result(d, 100 nanos).getOrElse(None)
如果我正确理解您的需求。这将提供一个始终成功的未来,如果成功,其结果与
getOptionResult
相同,如果失败,其结果与
None
相同。请参阅


通常,您不希望在
结果的左侧指定类型,它将不是字符串,而是io.Serializable在示例代码中,
myString
的用途是什么?
someActions()
的返回类型是什么?
getOptionResult.recover { case _ => None }