2
我如何可以指定一個未應用的高階類型參數的邊界,使得下列編譯:對於未應用類型類型界限參數
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
儘可能乾淨)?
我感到困惑。我確信我已經嘗試過,並且不接受第一條線。但顯然,現在我編譯你的代碼,它的工作原理: - #對於噪音抱歉... – 2012-01-15 21:35:22