2016-03-25 12 views
7

スカラコードで使用される暗黙的な変換または暗黙の引数の値が見つかりません。これにより、オープンソースプロジェクトの読み込みが非常に混乱します。スカラの暗黙関数または変数の検索方法

implicitlyトリックは、あるタイプの有効な暗黙の変数があるかどうかを確認するのに役立ちますが、暗黙の変数が定義された場所を特定できません。

scala> implicitly[(Int) => RichInt] 
res2: Int => scala.runtime.RichInt = <function1> 

コードで使用されている暗黙的な変換と値の定義を簡単に見つける方法はありますか?ソースコードファイルが非常に長い場合は、膨大な作業になります。

答えて

9

SO上でカバーされている1つのトリック:

scala> import reflect.runtime._,universe._ 
import reflect.runtime._ 
import universe._ 

scala> reify { "abc".size } 
res1: reflect.runtime.universe.Expr[Int] = Expr[Int](Predef.augmentString("abc").size) 

最近のREPL:

scala> 3 until 4 //print<hit tab completion> 
    scala.Predef.intWrapper(3).until(4) // : scala.collection.immutable.Range 
関連する問題