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和隐式导入?的主要内容,如果未能解决你的问题,请参考以下文章

15Scala隐式转换和隐式参数

Scala函数编程和隐式转换

Scala:泛型和隐式

Scala 系列(十三)—— 隐式转换和隐式参数

Scala 学习笔记之隐式参数和隐式转换并用

Scala基础:隐式转换与隐式参数