Scala 为什么用于理解的展开future via的结果类型是future?
我的代码:Scala 为什么用于理解的展开future via的结果类型是future?,scala,future,Scala,Future,我的代码: val f1 = Future[String] { "ok1" } val fRes: Future[String] = for { r <- f1 } yield r for和yield的组合不会“打开”未来的。 实际上,这是一件好事 因此,每一种选项,尝试,列表,或者像人们所说的那样,应用函数都以这种方式保持它的类型 由于此属性,您可以在{ //我在这里“打开包装” (i*i)toString } val x:选项[]=用于{ 我在这里看一下如何使用期货:用于理解的r内部
val f1 = Future[String] { "ok1" }
val fRes: Future[String] = for { r <- f1 } yield r
for
和yield
的组合不会“打开”未来的。
实际上,这是一件好事
因此,每一种选项
,尝试
,列表
,或者像人们所说的那样,应用函数
都以这种方式保持它的类型
由于此属性,您可以在{
//我在这里“打开包装”
(i*i)toString
}
val x:选项[]=用于{
我在这里看一下如何使用期货:用于理解的
r
内部是一个String
,但您产生的r
是一个Future[String]
。阅读@RobertUdah链接的页面是一个好主意,这样可以了解什么是未来
。理解的方法就是flatMap
s+map
。在你的例子中,{r)的语法,所以你最终得到同样的未来[String]是合乎逻辑的
您从开始。您不会得到字符串,因为for construction不会阻止等待将来完成。
val fRes = for { r <- Await.result(f1, Duration(1, TimeUnit.SECONDS)) } yield r
val x: Option[_] = Some(5).map{ i =>
// i is "unwrapped" here
(i * i).toString
}
val x: Option[_] = for {
i <- Some(5)
} yield i.toString // i unwrapped for the for comprehension but will keep Option type