scala - 在 Scala 中,如何在执行期间找到有效的隐式方法、声明和转换
问题描述
试图理解 akka marshalling/unmarshalling 并发现很多 scala 隐式魔法在后台和引擎盖下进行。
问题:有没有办法在执行期间找出哪些隐式构造是有效的。了解有用的事情: - 哪些隐式声明和转换是有效的 - 在哪里声明它们
我在想这可能是一个 IDE 插件?在代码调试期间使用?
我认为这将有助于理解 akka 编组/解组,但通常在使用复杂隐式特征的地方也很有用。
解决方案
在编译时选择隐式。
与-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 有“显示隐式”。
推荐阅读
- javascript - 如何在画布中创建透视效果?
- windows - 从命令行创建kafka主题时出错该命令的语法不正确
- c++ - 有什么方法可以将用户输入定义为我的字符串数组长度?
- docker - 如何将容器部署到kind等本地kubernetes环境?
- javascript - JavaScript 数组扩展语法的运行时复杂度是多少?
- python - Django HttpResponse 结果在控制台中输出,但现场没有
- c - 旋转实体对象在目的地内产生空白点
- unity3d - Rider“无 Unity 编辑器连接”Linux
- java - 组合情况下的对象生命周期和 GC
- ruby - 来自 Rake 任务的 Docker 中的 Docker,非常非常慢