Как я могу указать границы непримененного параметра высшего типа заказа, например, что в следующих компиляциях:Тип границы для непримененного типа параметры
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
как можно чище)?
Я сбит с толку. Я уверен, что пробовал это, и он не принял эту первую строку. Но, очевидно, теперь, когда я компилирую ваш код, он работает: - # Извините за шум ... –