次のscalaコードがあるとしましょう:
case class Term(c:Char) {
def unary_+ = Plus(this)
}
case class Plus(t:Term)
object Term {
implicit def fromChar(c:Char) = Term(c)
}
今、私はscalaコンソールからこれを取得します:
scala> val p = +'a'
p: Int = 97
scala> val q:Plus = +'a'
<console>:16: error: type mismatch;
found : Int
required: Plus
val q:Plus = +'a'
^
'+' は Char 型に既に存在するため、暗黙の変換は行われないと思います。Char タイプに適用する前に、デフォルトの動作をオーバーライドし、変換された Term に「+」を適用する方法はありますか?
(ところで、この例は人為的なものであり、別の設計を探しているわけではありません。この例は、問題を説明するためのものです)