暗黙の型変換(implicit conversion)に続いて、implicitキーワードを使っている暗黙の引数(implicit parameter)についてメモ。
次いで、それがよく使われると思われるClassManifestについてメモ。
ClassManifestをメソッドの引数に渡す方法は分かったけど、どういう呼び出しを経てClassManifestのインスタンスが決まるのか、ちっとも理解できない><
単純なClassManifest[Int]だと、実体としてはClassManifestオブジェクトのIntというフィールドが返ってるみたいだし、複雑なArray[List[Int]]とかもそれらしいインスタンスが生成されている。
「implicitly[ClassManifest]」を実行したときに出てくるエラーから、なんとなくPredefのconforms関数が絡んでいるような気がするけど…。
あるスコープ内でどんな暗黙メソッド・値が使われるか、確認する方法は無いのかなぁ。
scalacでコンパイルオプション「-Xprint:packageobjects」「-Xprint:typer」をつけてコンパイルしてみると、その間で暗黙の引数が解決されたのは分かるんだけど、どういう理由でそうなったのかは全く分からん(苦笑)
ただ単にClassManifestを使うだけだったら全く困らないけど、気になるー。
※コメント投稿者のブログIDはブログ作成者のみに通知されます