j3d*_*j3d 2 scala future for-comprehension
请查看以下代码段:
import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global
object Main extends App {
ids.foreach { l => println(l.mkString(", ")) }
for(l <- ids) println(l.mkString(", "))
def ids = Future(List(1, 2, 3, 4))
}
Run Code Online (Sandbox Code Playgroud)
方法ids返回一个Future[List[Int]],我想打印返回的值List:
ids.map { l => println(l.mkString(", ")) } // prints nothing
for(l <- ids) println(l.mkString(", ")) // prints nothing
Run Code Online (Sandbox Code Playgroud)
问题是上面的任何语句都没有打印List返回的内容ids.我错过了什么吗?
您的报表没有打印任何内容,因为您的程序在运行之前已退出.如果等待Future完成,您应该看到打印出的值.看到scala.concurrent.Await.result
例如
@ import scala.concurrent._, duration._, ExecutionContext.Implicits._
import scala.concurrent._, duration._, ExecutionContext.Implicits._
@ def ids = Future(List(1,2,3,4))
defined function ids
@ Await.result(ids.map(l => println(l.mkString(", "))), Duration.Inf)
1, 2, 3, 4
@
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1171 次 |
| 最近记录: |