我试图理解为什么以下 Scala 代码的隐式解析(或者可能是类型推断)失败。在此代码中,编译在倒数第二行失败,但在显式提供类型的行的修改版本上成功。
object O {
trait Wrapper[-A, +B] {
def func: A => B
}
object Identity
implicit class Identity2Wrapper[A](self: Identity.type) extends Wrapper[A, A] {
override def func: A => A = identity
}
// Compilation fails on the next line with error:
// found String("hello")
// required: A
Identity.func("hello")
// This line compiles.
implicitly[Identity.type => Wrapper[String, String]].apply(Identity).func("hello")
}