繁体   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