[英]Sequence of futures in Scala are empty
这段代码:
object TestFutures2 extends App {
def double (i:Int) = Future { i * 2 }
var futures = Seq[Future[Int]]()
for ( x <- 1 to 5) {
futures = futures :+ double(x)
}
println("futures: "+futures)
Future.sequence(futures).map {
result => println("result: "+result)
}
Thread.sleep(10000)
}
打印:
futures: List(List(), List(), List(), List(), List())
result: List(2, 4, 6, 8, 10)
futures
变量的含义是什么? 为什么它是一个空列表? 应该不是声明的Seq[Future[Int]]
吗?
这实际上对我来说似乎很好。
它显示
[DEBUG 08:06:45] futures: List(Future(<not completed>), Future(<not completed>), Future(<not completed>), Future(<not completed>), Future(<not completed>))
[DEBUG 08:06:45] result: List(2, 4, 6, 8, 10)
使用自定义记录器在Scalatest中运行
System.out.print(s"[DEBUG ${customTimerMethod}] $message \n")
打印出一个Seq会将其转换为一个List,如果您尝试简单地println(“ someSeq:” + Seq())仍然会是一个列表。 这很可能是因为Java没有Seq,因此将其转换为最接近的祖先类型。
正如@CyrilleCorpe在评论中指出的那样,不完整的Future
不会显示在REPL中,而是显示为空List
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.