Scala中的期货序列是空的

时间:2017-05-16 05:00:45

标签: scala

此代码:

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吗?

1 个答案:

答案 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