此代码:
Entire Solution
打印:
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
吗?
答案 0 :(得分:0)
这实际上对我来说似乎没问题。
显示
[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(&#34; someSeq:&#34; + Seq())它仍然是一个列表。这很可能是因为Java没有Seq所以它将它转换为它最接近的祖先类型。
正如@CyrilleCorpe在评论中指出的那样,不完整的Future
未显示在REPL中并显示为空List
s