首页 > 解决方案 > 在 Scala 中,如何在执行期间找到有效的隐式方法、声明和转换

问题描述

试图理解 akka marshalling/unmarshalling 并发现很多 scala 隐式魔法在后台和引擎盖下进行。

问题:有没有办法在执行期间找出哪些隐式构造是有效的。了解有用的事情: - 哪些隐式声明和转换是有效的 - 在哪里声明它们

我在想这可能是一个 IDE 插件?在代码调试期间使用?

我认为这将有助于理解 akka 编组/解组,但通常在使用复杂隐式特征的地方也很有用。

标签: scalaakkamarshallingimplicit-conversionimplicit

解决方案


在编译时选择隐式。

-Xlog-implicit-conversions

scala 2.13.0-M5> "42".toInt
                 ^
                 applied implicit conversion from String("42") to ?{def toInt: ?} = implicit def augmentString(x: String): scala.collection.StringOps
res0: Int = 42

scala 2.13.0-M5> "42".toInt //print<TAB>
   scala.Predef.augmentString("42").toInt // : Int

-Xlog-implicits解释什么时候隐式不适用。

IntelliJ 有“显示隐式”。


推荐阅读