1
以下代碼錯誤與'類型不匹配'錯誤,說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())
}
如何說服編譯器FooProcessor是Processor [Model]的擴展?
[斯卡拉新手在這裏]。雖然有多少有效的模型?不「密封」是指Foo是唯一的一個? – david
是的,但編譯器不允許在這裏使用這些信息。如果你想強制'Foo'是唯一有效的模型,那麼寫'class DelegatingProcessor [M <:Foo]'。 –