Scala:如何在未来打印列表
Scala: How to print a List in a Future
看下面的代码片段:
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
returns a Future[List[Int]]
我想打印返回的值 List
:
ids.map { l => println(l.mkString(", ")) } // prints nothing
for(l <- ids) println(l.mkString(", ")) // prints nothing
问题是上面语句的 none 打印了 ids
返回的 List
的内容。我错过了什么吗?
您的语句未打印任何内容,因为您的程序在 运行 之前退出。如果您等待 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
@
看下面的代码片段:
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
returns a Future[List[Int]]
我想打印返回的值 List
:
ids.map { l => println(l.mkString(", ")) } // prints nothing
for(l <- ids) println(l.mkString(", ")) // prints nothing
问题是上面语句的 none 打印了 ids
返回的 List
的内容。我错过了什么吗?
您的语句未打印任何内容,因为您的程序在 运行 之前退出。如果您等待 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
@