Promise.tryComplete中的参数是指什么?

时间:2013-11-29 04:57:33

标签: scala promise future

任何人都可以告诉我参数在tryComplete函数中引用了什么?

def any[T](fs: List[Future[T]]): Future[T] = {
   val p = Promise[T]()

   fs foreach (x => x.onComplete(p.tryComplete(_)))

   p.future
}

我知道这里的下划线是Try[T]类型。这个Try[T]来自哪里?

2 个答案:

答案 0 :(得分:5)

让我们从头开始。由于fsList[Future[T]],因此您知道xFuture[T]

您需要注册一个在x的结果可用时将触发的回调。执行此操作的简单方法是onComplete,它采用类型Try[T] => U的函数。

所以下划线是Try[T],其中包含x Future[T]的结果。当Future工作并保存结果时Success[T] Future[T]有两种可能的结果,而Failure[T]Future[T]而保留异常没用。

所以Try类似于Option,这是一种安全地表示结果的方法。

希望有所帮助。

答案 1 :(得分:0)

onComplete接受一项功能。下划线接收该函数的第一个参数。如果有多个下划线,则第一个下划线表示第一个参数,第二个下划线表示第二个参数,依此类推。