2011-12-31 17 views
16

私のコードでimplicitsのすべての使用を見つけて表示する方法がありますか、implicitsを有効にしないでコンパイルする(コンパイルエラーが出る)のですか?私は意図的に内部ループに余分なメモリを割り当てる場所を特定したいと考えています。すべてのimplicitsを見つける

答えて

18

オプション-Xprint:typerオプションを使用して、対象の内部ループがどのようにタイプされているかを調べることができます。暗黙の呼び出しは、印刷されたソースコードに表示されます。興味深いセクションを検索できるように、出力をファイルにパイプする必要があるかもしれません。

また、http://scala-ide.org/download/nightly.htmlのScala Eclipse IDEナイトリリーには暗黙的な表示機能があります。 Preferencesで,Scala,Implicitsセクションで有効にする必要があります。

左マージン上の二重矢印は暗黙が使用されていることを示しています。

ホバーで

enter image description here

が、それは詳細を示しています。

enter image description here

IDEAのScalaのプラグインすることもでき下線付きの暗黙的な変換を表示するには、同じコードを参照してください。

012昨日のよう

また、CTRL-SHIFT-Qのショートカットを使用して使用される1表示されるはずですが、私はそれであまり成功していた...

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) { 
       ^
関連する問題