首先,我必须告诉我对Scala的经验并不是我最近读了一些我不了解其工作方式的代码。
此示例代码使用Future
,通常它们都需要scala.concurrent.ExecutionContext.Implicits.global
,但在项目代码中的任何地方都没有声明。当我尝试在我的Intellij项目中使用Future
时,有人抱怨我必须在某个地方声明ExecutionContext
...
import scala.collection.JavaConverters._
相同。示例代码一直在使用asScala
,而无需导入转换器...
是否有一种方法可以在Scala中配置宽阔的项目项目(或者可能是Intellij中的窍门)...
我不认为这与Intellij相关。
一种可能的解释是,您所指的代码在某些全球导入的范围(例如package object
)中声明为这些隐含的代码。在这种情况下,包装中的任何成员都会看到此对象中声明的隐式。
在Intellij中,您可以使用快捷方式Ctrl+Shift+Alt++
(隐性提示)查找代码中使用了哪些隐含的隐含物(以及它们所缺少的隐含)(它们以浅灰色为单位,您可以使用,您可以可以CTRL+click
上)。请参阅:https://www.jetbrains.com/help/idea/edit-scala-code.html#scala_hints
因此,如果您继续使用隐式提示激活的Intellij中不了解的代码,您将能够查看隐式定义的位置。
对于您的情况:尝试在文件中使用import scala.concurrent.ExecutionContext.Implicits.global
,您需要隐式ExecutionContext
。
是否有一种方法可以在Scala中配置宽阔的项目项目(或者可能是Intellij中的诀窍)...
不,您必须在范围中的某个地方定义隐含的内容或导入它们。(伴随对象也适用)。阅读此信息以进行更详细的说明:https://docs.scala-lang.org/tour/implitic-parameters.html