假设我有trait Foo
我也有一个在类型参数
中使用trait Foo的特性trait Bar[T <: Foo] {
def bar: T = new Foo {} //doesn't compile
}
我想在Bar
方法的特征bar
中提供默认实现。我需要这个,因为有几个实现不需要覆盖bar
方法(他们对Foo
感到满意),但也有一些实现需要提供{{1的特定实现在Foo
方法中。
这可能吗?
答案 0 :(得分:1)
要扩展@TravisBrown的建议,您可以获得Bar
特征:
trait Bar[T <: Foo] {
def bar: T
}
另一个提供默认值的特性:
trait FooBar extends Bar[Foo] {
def bar = new Foo {}
}
然后,所有不需要专业化的实现都可以扩展FooBar
而不是Bar
class Baz extends FooBar {
// Compiles without a def bar:T implementation
}