查找所有含义

时间:2011-12-31 00:48:47

标签: scala

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

2 个答案:

答案 0 :(得分:18)

您可以使用-Xprint:typer选项查看如何键入内部循环选中的内容。隐式调用将出现在打印的源代码中。您可能需要将输出传递给文件,以便可以搜索有趣的部分。

另外,http://scala-ide.org/download/nightly.html处的Scala Eclipse IDE夜间显示隐式功能。您必须在首选项 Scala Implicits 部分中启用它。

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

enter image description here

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

enter image description here

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

enter image description here

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

答案 1 :(得分: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) {
                  ^