假设我有以下 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 上应用“+”?
(顺便说一句,这个例子是人为的,我不是在寻找替代设计。这个例子只是为了说明问题)