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