2

可能重复:
scala 自类型和特征子类之间有什么区别?

我无法区分以下两个代码块:

    // 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 =>
    ...
    }

我是从设计的角度来问的。

谢谢!

4

1 回答 1

4

当您使用 self 类型时,您将 限制为trait仅在指定的 self 类型满足与它混合的其他类型时使用。您没有得到trait被定义和声明的自我类型之间的继承关系。这意味着 trait 本身作为一个孤立的静态类型,不能单独公开替代 self 类型。(它被比作 C++ 私有继承,但这是一个弱的类比)。

于 2013-01-31T19:21:34.183 回答