使用蛋糕模式时,您何时需要使用自我类型注释,例如:
trait DefaultFoo extends Foo {
this: Bar =>
...
}
vs stub def
trait DefaultFoo extends Foo {
def bar:Bar
...
}
或存根
trait DefaultFoo extends Foo {
val bar:Bar
...
}
更新: 我会更具体一点(希望如此)。所有这三种形式都定义了对Bar实例的需求。所以基本上,任何一种形式混合在这个特征中的任何非抽象类都必须提供Bar的实现。我的问题是,我什么时候想使用自我类型注释强制执行Bar;我什么时候想要使用def存根来强制和实现Bar,何时我想使用val存根强制它。我希望现在的问题更清楚一点。
由于 Netta