为什么以下代码有效:
class X
class A(implicit c: X)
class B(arg: Int)(implicit c: X) extends A
class C(arg: Int)(implicit c: X) extends B(arg)
但不是这一个:
class X
class A(implicit c: X)
class B[T](arg: T)(implicit c: X) extends A
class C(arg: Int)(implicit c: X) extends B(arg)
失败并出现以下错误:
错误:找不到参数c的隐含值:core.X
C类(arg:Int)(隐式c:X)扩展B(arg)
答案 0 :(得分:4)
如果在调用B
的构造函数时帮助类型推理器似乎有效:
class X
class A(implicit c: X)
class B[T](arg: T)(implicit c: X) extends A
class C(arg: Int)(implicit c: X) extends B[Int](arg)
因此它看起来不像是一个基本限制。但是您没有包含的错误消息非常无用无法找到参数c:X 的隐含值。