gpt4 book ai didi

scala - 在 Scala 中的 firstCompletedOf 中需要什么是隐式的

转载 作者:行者123 更新时间:2023-12-01 15:19:44 25 4
gpt4 key购买 nike

问题

这是 scala.concurrent.Future 的摘录

  def firstCompletedOf[T](futures: TraversableOnce[Future[T]])(implicit executor: ExecutionContext): Future[T] = {
val p = Promise[T]()
val completeFirst: Try[T] => Unit = p tryComplete _
futures foreach { _ onComplete completeFirst }
p.future
}

我的问题是,为什么我们需要一个隐含的 ExecutionContext在这里?它在这个范围内做什么?

背景

从 Java 切换到 Python 我对以下不是正确的 Python 程序感到不安:
print("some string" + 42)

您必须添加显式转换,因此这将起作用:
print("some string " + str(42))

然后,我开始在 Scala 中编程,不知何故隐式开始成为我的噩梦:

我已经阅读了很多关于隐式的文章( this 最好的一篇),但我仍然不相信,为什么我们需要在 Scala 中使用隐式!?

在我看来,从长远来看,隐式会使您的代码难以理解。

自从切换到 Scala 后,我开始真正喜欢“显式”(尽管我确实很喜欢 Scala)。

任何人都可以向我指出有关该主题的任何其他重要资源吗?

最佳答案

在该特定上下文中,onComplete回调需要一个执行上下文。

def onComplete[U](f: (Try[T]) ⇒ U)(implicit executor: ExecutionContext): Unit

直觉是,一旦 Future 在其自己的执行上下文中完成,我们需要计算资源来执行回调闭包中的逻辑。

至于关于 implicits的一般性讨论,它们是一个强大的工具。引用本帕克的话,“能力越大,责任越大”

关于scala - 在 Scala 中的 firstCompletedOf 中需要什么是隐式的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41122312/

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