为什么自我类型可以声明类

时间:2014-03-28 00:55:35

标签: scala

我知道Scala只能混合特性,它对依赖注入和蛋糕模式有意义。我的问题是为什么我仍然可以声明一个需要另一个“类”而不是特质的类。

代码:

class C
class D { self : C =>}

这仍然是成功的。我认为它应该编译失败,因为在这一点上新的实例D(C是类不是特质)怎么可能。

修改

尝试实例化D:

新的C与C //编译失败C类需要成为混合的特征。

1 个答案:

答案 0 :(得分:0)

您应明确class Dextends C,如下所示:

class C
class D extends C { self: C => }

此外,您可以参考帖子Does a class with a self type of another class make sense?,它可以清楚地解释这个问题。