1

标题是对的,我什么都想要。

  • 在急切评估中,总是在分配完成后立即评估功能。
  • 在惰性求值中,直到需要该值时才执行此操作,但随后它是一个阻塞操作,就像在急切求值中一样,但延迟了。
  • 我希望有一些东西可以急切地同时开始评估(而不是阻塞),直到需要该值。

我知道这有点奇怪,所以我做了一个说明性的要点

它在这个例子中完美运行,并且惰性渴望值的计算似乎是免费的,而其他两个值每个需要 10 秒。当然,事情正在另一个线程中发生,依此类推,但我对此很好,我只是想在需要时有一些选择来做这样的事情。

我一直在考虑以更优雅的方式来定义它,函数注释等。最后我发现的唯一可能性是,它在 Scala (AFAIK) 中不可用。

有什么方法可以优雅地做到这一点,或者我写的东西是优雅的吗?

PD:只是为了更清楚。这就是做我想做的事情所需要的:

val eager_lazy_aux = Future(longComputation(1))
lazy val eager_lazy = Await.result(eager_lazy_aux, Duration.Inf)

这就是我想做的:

parallel val eager_lazy = longComputation(1)

我不是隐式的忠实粉丝,但也许添加这是我们能得到的最好的。

implicit def getFuture[T](f: Future[T]): T = Await.result(f, Duration.Inf)
4

0 回答 0