查找所有含义

Mik*_*ike 17 scala

在Scala中是否有一种方法可以在我的代码中找到并显示implicits的所有用法,或者在没有启用implicits的情况下进行编译(因此我遇到了编译错误)?我希望找到我无意中在内循环中分配额外内存的地方.

huy*_*hjl 18

您可以使用-Xprint:typer选项并查看如何键入内部循环的类型.隐式调用将出现在打印的源代码中.您可能需要将输出通过管道传输到文件,以便可以搜索有趣的部分.

此外,http: //scala-ide.org/download/nightly.html上的Scala Eclipse IDE nightes 具有显示隐式功能.您必须在Preferences,Scala,Implicits部分中启用它.

左边距上的双箭头表示使用了隐式:

在此输入图像描述

在悬停时,它显示详细信息:

在此输入图像描述

IDEA scala插件还可以显示带下划线的隐式转换,请参阅同一段代码:

在此输入图像描述

它还应该显示使用CTRL-SHIFT-Q快捷方式使用哪一个,但我用它的成功率较低......


psp*_*psp 11

截至昨天(这只是一个巧合),有-Xlog-implicit-conversions.

scalac -Xlog-implicit-conversions -d /tmp /scala/trunk/src/library/scala/util/Random.scala 
/scala/trunk/src/library/scala/util/Random.scala:115: applied implicit conversion from Int to ?{val to: ?} = implicit def intWrapper(x: Int): scala.runtime.RichInt
    for (n <- buf.length to 2 by -1) {
                  ^
Run Code Online (Sandbox Code Playgroud)