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
@