【发布时间】:2021-07-12 03:40:26
【问题描述】:
考虑以下示例:
sealed trait ST
object ST{
case class ST1() extends ST
case class ST2() extends ST
}
trait TypeClass[A]{
def doSome(a: A): Unit
}
case class Test[T](t: T)
implicit val tp: TypeClass[Test[_ <: ST]] = ??? //the implicit
def foo[A: TypeClass](a: A) = implicitly[TypeClass[A]].doSome(a)
val v: Test[_ <: ST] = ???
foo(v) //error: implicit not found
可以看出,所需的隐式在范围内,而编译器无法识别。
为什么会发生这种情况?是否有解决方法可以致电foo?
【问题讨论】: