2011-12-31 56 views
16

在Scala中有沒有方法可以在我的代碼中查找和顯示implicits的所有用法,或者在沒有啓用implicits的情況下編譯(所以我得到編譯錯誤)?我希望找出無意間在內部循環中分配額外內存的地方。找到所有implicits

回答

18

您可以使用-Xprint:typer選項並查看如何檢查感興趣的內部循環。隱含的調用將出現在打印的源代碼中。您可能需要將輸出傳輸到文件,以便您可以搜索有趣的部分。

此外,Scala Eclipse IDE在http://scala-ide.org/download/nightly.html夜間有一個顯示隱式功能。您必須啓用它在首選項,斯卡拉,隱含部分。

左側緣中的雙箭頭示出了一個隱式使用:

enter image description here

在懸停,它示出了細節:

enter image description here

想法階插件還可以用下劃線顯示隱式轉換,參見同一段代碼:

enter image description here

還應該顯示哪些人使用CTRL-SHIFT-Q快捷鍵使用,但我與它不太成功......

11

截至昨日(這只是一個巧合)有-Xlog-隱式轉換。

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) { 
       ^