gpt4 book ai didi

scala - 为什么 Scala 强制使用 Await 而不是 Awaitable?

转载 作者:行者123 更新时间:2023-12-01 05:50:10 27 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Why doesn't Scala's Future have a .get / get(maxDuration) method, forcing us to resort to Await.result() instead?

(3 个回答)


3年前关闭。




Awaitable trait需要 CanAwait不能在 concurrent 之外使用的隐式包裹。因此,从技术上讲,您是不允许调用 Awaitable 的。直接方法,应该使用Await而是对象。

我想了解为什么会做出这样的设计决定。

trait Awaitable[+T] {
def ready(atMost: Duration)(implicit permit: CanAwait): this.type
}

package concurrent {
sealed trait CanAwait
private[concurrent] object AwaitPermission extends CanAwait

object Await {
def ready[T](awaitable: Awaitable[T], atMost: Duration): awaitable.type =
blocking(awaitable.ready(atMost)(AwaitPermission))
}
}

最佳答案

因为它们不是你能够覆盖的Awaitable.ready在你自己的课上。
他们可以做到private[concurrent] ,但是你也不能调用它。他们也可以做到final ,但是在子类中覆盖它是不可能的(其中只有一个,所以,在这种情况下,这不是一个真正的问题......但是如果他们想稍后添加更多呢?)

关于scala - 为什么 Scala 强制使用 Await 而不是 Awaitable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55462498/

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