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]の拡張機能であることをコンパイラに納得させるにはどうすればよいですか?
[Scala newbie here]どれくらいの有効なモデルがそこにありますか? Fooが唯一のものであることを「封印」していないのですか? – david
はい、コンパイラはここでその情報を使用することはできません。 'Foo'が有効な唯一のモデルであることを強制したい場合は' class DelegatingProcessor [M <:Foo] 'と書いてください。 –