Scala 泛型方法的默认实现
假设我有一个Scala 泛型方法的默认实现,scala,Scala,假设我有一个trait Foo 我还有一个在类型参数中使用trait Foo的trait trait Bar[T <: Foo] { def bar: T = new Foo {} //doesn't compile } trait Bar[T要扩展@TravisBrown的建议,您可以使用Bartrait: trait Bar[T <: Foo] { def bar: T } 然后,所有不需要专门化的实现都可以扩展FooBar,而不是Bar class Baz exten
trait Foo
我还有一个在类型参数中使用trait Foo的trait
trait Bar[T <: Foo] {
def bar: T = new Foo {} //doesn't compile
}
trait Bar[T要扩展@TravisBrown的建议,您可以使用Bar
trait:
trait Bar[T <: Foo] {
def bar: T
}
然后,所有不需要专门化的实现都可以扩展FooBar
,而不是Bar
class Baz extends FooBar {
// Compiles without a def bar:T implementation
}
请包含编译器错误消息。它不编译的原因是,t您可以使用提供此实现的trait FooBar extensed Bar[Foo]
。@joescii假设我有100个可能的Bar实现。其中70个中有t==Foo。我不想在70种情况下重复代码(new Foo{}
)
class Baz extends FooBar {
// Compiles without a def bar:T implementation
}