implicit conversion を使ったらこんな warning が出たので、理由を調べた。
[warn] .../Main.scala:8: implicit conversion method toMyRichString should be enabled
[warn] by making the implicit value scala.language.implicitConversions visible.
[warn] This can be achieved by adding the import clause 'import scala.language.implicitConversions'
[warn] or by setting the compiler option -language:implicitConversions.
[warn] See the Scala docs for value scala.language.implicitConversions for a discussion
[warn] why the feature should be explicitly enabled.
ググったところ、SIP-18 に理由が書いてあった。
- implicit conversion の過剰な使用は多くの落とし穴を作ることになる。
- implicit conversion はとても強力だし、その効果が理解しやすいので、過剰に使われやすい。
- implicit parameter を使ったほうが implicit conversion を使うよりも多くの場面で良い設計になる。
ということで、「使い過ぎないように」というわりと普通な理由だった。
3番目の implicit parameter を使ったほうが良いっていうのはどういうことだろう…。