gpt4 book ai didi

scala - 辅助函数中的Scala async {await(…)}无法通过类型不匹配进行编译

转载 作者:行者123 更新时间:2023-12-02 10:44:05 24 4
gpt4 key购买 nike

我正在尝试使用Scala的asyncawait处理在foldLeft调用期间给出的 future ,因此我编写了一个辅助函数来进行等待,因为我无法在嵌套函数内使用await:

  import scala.await.Await._
def a(f: Future[T]): T = async {
await(f)
}

但是,以上操作失败:
Error:(33, 38) type mismatch;
found : scala.concurrent.Future[T]
required: T
def a(f: Future[T]): T = async {
^

我究竟做错了什么?

最佳答案

就像错误所说的一样,返回类型必须是Future[T]。异步块始终返回 future 。

Here是async和await的签名:

def async[T](body: T)(implicit execContext: ExecutionContext): Future[T]
def await[T](awaitable: Future[T]): T

您可以看到 asyncT => Future[T]的功能。您可能会注意到,该签名与 Future { ... }构造函数AKA Future.apply相同。它只是构筑了 future 。

魔术在 await中。它将值(value)从 future 中拉出来,因此您可以编写“正常”外观的代码,同时仍可以处理 future 。

关于scala - 辅助函数中的Scala async {await(…)}无法通过类型不匹配进行编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30016433/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com