4

次のコードを使用します。

trait Hello[B <: Baz[_, _]]
trait World[F <: Foo] { self: Hello[Baz[F, _]] =>

  def foo: F

}
trait Baz[F <: Foo, B <: Bar]
trait Foo
trait Bar

case class BasicHello() extends Hello[BasicBaz] with World[BasicFoo]
case class BasicBaz() extends Baz[BasicFoo, BasicBar]
case class BasicFoo() extends Foo
case class BasicBar() extends Bar

BasicHelloケース クラスで IDE に次のエラーが表示されます。

Illegal inheritance, self-type BasicHello does not conform to Hello[Baz[F, _]]

BasicHelloextends以来Hello[BasicBaz]、コンパイラがこれを許可しない理由がわかりませんBaz[BasicFoo, BasicBar]。のタイプは、ミックスインが必要とするものとまったく同じであるBasicHello必要があります。自己型に欠けている階層プロパティはありますか? Hello[Baz[Foo, Bar]]World

4

1 に答える 1