簡體   English   中英

Scala中的期貨序列為空

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM