IntelliJ IDEA Scalaプラグインのimplicit関連機能
IntelliJのScalaプラグインでよく使うimplicit関係の機能について。
code completion
暗黙型変換によって使えるようになるメソッドも補完されます。また、それらには名前に下線が引かれます。
あるデータに対して何かやりたいとき、とりあえずimport scalaz._, Scalaz._
して補完候補からそれらしい名前と型のメソッド探す、ということを自分は結構やります。Scalazなんてそんな感じで使えばいいと思うのです。
implicit conversion method
Ctrl+Shift+Q でカーソル位置のオブジェクトを引数に取って呼び出すことのできるimplicitメソッドの一覧を表示します。メソッドを選択してEnterで定義元にジャンプします。
また、実際にその場所で暗黙型変換が行われている場合、使用されているメソッドが太字になります。ここではpureが定義されているのはmkIdentityによって変換されるIdentityだということが分かります。
actual implicit parameters
Ctrl+Shift+P ではメソッドが取る暗黙的な引数について、実際に何が渡されているのかが表示されます。ここでもEnterでジャンプします。
def pure[F[_]](implicit p: Pure[F]): F[A] = p pure value
pureの定義はこうなっています。1.pure[List]
という呼び出しでは、この implicit p には TraversablePure(の戻り値)が渡されているということです。
残念ながらTraversablePureに渡されるimplicit parameterを更に表示、ということは今のところできないようです。