Generics 为什么当扩展类在Scala中是泛型时隐式失败?
为什么以下代码有效:Generics 为什么当扩展类在Scala中是泛型时隐式失败?,generics,scala,implicit-conversion,Generics,Scala,Implicit Conversion,为什么以下代码有效: 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)
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)
如果您在调用
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的隐式值。-1。当您忽略错误消息时,它没有帮助。@Antoras您是对的。。。修正了。两个都在2.9.1.final上为我工作。您使用的是哪个版本?@RexKerr➜ ecaalyx网关git:(逻辑)scala-版本scala代码运行程序版本2.9.1.final-版权所有2002-2011,LAMP/EPFL