Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 泛型方法的默认实现_Scala - Fatal编程技术网

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
}