在斯卡拉,我已经看到了构造 trait T extends S 和 trait T { this: S => 用来实现类似的事情(即S中的抽象方法必须在创build实例之前被定义)。 他们之间有什么区别? 你为什么要用另一个呢?
A型的自我型: trait B trait A { this: B => } 说“ A不能混入一个不扩展B的具体类” 。 另一方面,以下是: trait B trait A extends B “ A混合的任何(具体的或抽象的)类也将在B中混合” 。 这两个陈述不是这个意思吗? 自我类型似乎只会造成编译时错误的可能性。 我错过了什么?