Generics Scala泛型和类型不匹配

Generics Scala泛型和类型不匹配,generics,scala,Generics,Scala,以下代码错误带有“类型不匹配”错误,表示FooProcessor应该是Processor[M] sealed trait Model case class Foo extends Model trait Processor[M <: Model] class FooProcessor extends Processor[Foo] class DelegatingProcessor[M <: Model] extends Processor[M] { val delegates

以下代码错误带有“类型不匹配”错误,表示FooProcessor应该是Processor[M]

sealed trait Model
case class Foo extends Model
trait Processor[M <: Model]

class FooProcessor extends Processor[Foo]

class DelegatingProcessor[M <: Model] extends Processor[M] {
  val delegates = Map[String, Processor[M]]("foo" -> new FooProcessor())
}
封闭特征模型
case类Foo扩展模型

特质处理器[M简而言之,你的
FooProcessor
处理器[Foo]的扩展
,并且特定于
Foo
。在
DelegatingProcessor
中,您需要一个
处理器
,它不仅能够处理
Foo
,而且能够处理任何有效的
模型
Foo处理器
,根本不符合这里的要求。而且-不要试图说服编译器,因为编译器就在这里为防止此类错误,请执行以下操作:-)

[Scala newbie here]。但是有多少有效的模型?是否“sealed”不意味着Foo是唯一的一个?是的,但编译器不允许在此处使用该信息。如果要强制执行
Foo
是唯一有效的模型,请编写
class DelegatingProcessor[M]