我知道Scala只能混合特性,它对依赖注入和蛋糕模式有意义.我的问题是为什么我仍然可以声明一个需要另一个"类"而不是特性的类.
码:
class C
class D { self : C =>}
Run Code Online (Sandbox Code Playgroud)
这仍然是成功的.我认为它应该编译失败,因为在这一点上新的实例D(C是类不是特征)怎么样.
编辑:
当试图实例化D时:
新的D与C //编译失败C类需要成为混合的特征.
您应该明确地进行如下class D操作:extends C
class C
class D extends C { self: C => }
Run Code Online (Sandbox Code Playgroud)
此外,您可以参考帖子Does a class with a self type of another class make sense? ,清楚地解释了这个问题。