Self
может быть использован в качестве возвращаемого типа метода:Использование Я как универсального типа
func doSomething() -> Self {}
ли это как-то можно использовать Self
в качестве общего типа, как это?
func doSomething() -> Wrapper<Self> {}
Пример
Было бы хорошо, если бы я мог создать подкласс ChristmasPresent и пусть он имеет wrapped
функцию, которая возвращает WrappedPresent с общей установкой на то, что подкласс был.
class ChristmasPresent {
func wrapped() -> WrappedPresent<Self> {
return WrappedPresent(present: self)
}
}
class WrappedPresent<T: ChristmasPresent> {
var present: T
init(present: T) {
self.present = present
}
}
class ToyCar: ChristmasPresent {}
let wrappedToyCar = ToyCar().wrapped() // Inferred to be: WrappedPresent<ToyCar>
Что бы это ограничение представляло? Где зарегистрировано это общее ограничение? Как объявляется Wrapper? Если это 'Wrapper', мы можем вернуть 'Wrapper ', возможно. –
cmyr
Есть ли причина, по которой вы не знаете тип «Я» в то время? Может быть, я просто недостаточно серьезно. Вы всегда можете заменить «Я» на фактическое имя класса – bjtitus
Я добавил пример :). – Rengers