どのように変換しますか:
trait Foo[A <: Foo[A]]
タイプメンバーに?
つまり、私は次のようなものが欲しいです:
trait Foo {
type A <: Foo {type A = ???}
}
しかし、名前Aはすでに型の改良に使用されているため、問題が発生しています。この質問は似ています(そしてそこから生まれます):型パラメーターの代わりに型メンバーによるF有界量化?
どのように変換しますか:
trait Foo[A <: Foo[A]]
タイプメンバーに?
つまり、私は次のようなものが欲しいです:
trait Foo {
type A <: Foo {type A = ???}
}
しかし、名前Aはすでに型の改良に使用されているため、問題が発生しています。この質問は似ています(そしてそこから生まれます):型パラメーターの代わりに型メンバーによるF有界量化?
自己型を使用します。
scala> trait Foo { self => type A <: Foo {type A = self.A}}
defined trait Foo
scala> class Bar extends Foo { type A = Bar }
defined class Bar
scala> class Bar extends Foo { type A = Int }
<console>:10: error: overriding type A in trait Foo with bounds <: Foo{type A = Bar.this.A};
type A has incompatible type
class Bar extends Foo { type A = Int }
^