Scala和隐式导入?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scala和隐式导入?相关的知识,希望对你有一定的参考价值。
首先,我必须告诉我,我不熟悉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中的技巧)...
不,您必须在范围内的某处定义implicits或导入它们。 (伴随对象也适用)。阅读本文以获得更详细的解释:https://docs.scala-lang.org/tour/implicit-parameters.html
以上是关于Scala和隐式导入?的主要内容,如果未能解决你的问题,请参考以下文章