適用されていないタイプパラメーターのタイプ境界
-
28-10-2019 - |
質問
次のコンパイルを使用するように、適用されていない高次パラメーターの境界を指定するにはどうすればよいですか。
trait Declr[Impl[_]] // need to specify constraints for Impl's type parameter
trait Sys[S <: Sys[S]]
object X extends Declr[X] // doesn't compile, because S is more strict
trait X[S <: Sys[S]]
より多くのタイプパラメーターを追加せずに Declr
. 。ソリューションは、 Impl
のパラメーターはです いつも S <: Sys[S]
(つまり、それはに入ることができるあらゆるタイプに縛られています Declr
).
私はタイプで制約を書くことができると思います メンバー このような:
trait Declr {
type Impl[S <: Sys[S]]
}
object X extends Declr {
type Impl[S <: Sys[S]] = X[S]
}
trait X[S <: Sys[S]]
しかし、これをタイプとして行う方法 パラメーター (の修正として type Impl
とてもうるさいです、そして私は持っていたいです object X
できるだけきれいに)?
解決
なぜだめですか
trait Declr[Impl[S <: Sys[S]]]
trait Sys[ S <: Sys[ S ]]
object X extends Declr[ X ]
trait X[ S <: Sys[ S ]]
所属していません StackOverflow