我知道Scala只能混合特性,它对依赖注入和蛋糕模式有意义。我的问题是为什么我仍然可以声明一个需要另一个“类”而不是特质的类。
代码:
class C
class D { self : C =>}
这仍然是成功的。我认为它应该编译失败,因为在这一点上新的实例D(C是类不是特质)怎么可能。
修改
尝试实例化D:
新的C与C //编译失败C类需要成为混合的特征。
答案 0 :(得分:0)
您应明确class D
至extends C
,如下所示:
class C
class D extends C { self: C => }
此外,您可以参考帖子Does a class with a self type of another class make sense?,它可以清楚地解释这个问题。