Scala:如何在将来打印列表
请查看以下代码段:Scala:如何在将来打印列表,scala,future,for-comprehension,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
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))
}
问题是上面的语句都没有打印由
ids
返回的列表的内容。我遗漏了什么吗?您的语句没有打印任何内容,因为您的程序正在运行之前退出。如果您等待未来
完成,您应该会看到打印出的值。请参见scala.concurrent.Await.result
例如
通过对未来进行映射/平面映射,您可以告诉it在结果可用时如何处理结果。如果程序在可用之前就已经存在,那么映射函数将永远不会执行。
ids.map { l => println(l.mkString(", ")) } // prints nothing
for(l <- ids) println(l.mkString(", ")) // prints nothing
@ 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
@