标题是对的,我想要一切。
我知道这有点奇怪,所以我做了illustrative gist。
在这个例子中它完美地工作,并且懒惰的急切值的计算似乎是免费的,而其他两个值每个需要10秒。当然,事情正在另一个线程中发生,等等,但我很好,我只想有一些选择来做这样的事情,有时候,在需要的时候。
我一直在用更优雅的方式来定义它,函数,注释等。最后,我找到的唯一可能是宏< / em>,在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)