Possible Duplicate:
What is the difference between scala self-types and trait subclasses?
我无法区分以下两个代码块之间的区别:
// Trait B is mixed in and creates a dependency on it
trait A extends C with B {
...
}
// Trait B is put in scope and also creates a dependency on it
trait A extends C {
self: B =>
...
}
我是从设计角度问的。
谢谢!
最佳答案
当您使用 self 类型时,您会限制 trait
仅当指定的 self 类型被与其混合的其他类型满足时才使用。您不会在定义的 trait
和声明的自类型之间获得继承关系。这意味着特征本身作为孤立的静态类型,本身不能公开替代 self 类型。 (它被比作 C++ 私有(private)继承,但这是一个很弱的类比)。
关于Scala自类型注释与 'with'混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14633231/