[英]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.