What's the usual way to do implicit prioritization with implicit value classes? Value classes are not allowed to be inside a trait.
2013-01-15 22:54:58 via web
言われるまで気づかなかったし、他にこの件について言ってる人を(少なくとも自分は)見たことないけど、わりと重要ですね。単なる「implicit class」ではなく、「implicit classとvalue classを同時に使った場合」というのがポイントです。以下解説
- implicit class は(実装的には "implicit def" と "class の定義" なので) トップレベルに定義できない(classやobjectの中に定義)*1
- value class は、トップレベルもしくは、objectの中でないと定義できない*2
- implicit の優先順位付け*3は、継承でしか制御できない
1と2を合わせると、
「implicit value class」は、objectの中にしか定義できない
そして、3の条件が重なると、
implicit value class の implicit の優先順位付けが不可能
ですよね・・・?
value class使って、かつ優先順位付けしたい場合は、「implicit value class」ではなく「value class」と「implicit def」に分けるしかないってことかな・・・。
なにか間違ってたり、良い解決策あったら教えて下さい