Self
może być używany jako typ zwracanej przez metodę:samodzielnego stosowania jako typ rodzajowy
func doSomething() -> Self {}
czy to jakoś możliwe użycie Self
jako ogólny typu jak ten?
func doSomething() -> Wrapper<Self> {}
Przykład
Byłoby miło gdybym mógł podklasy ChristmasPresent i niech mają wrapped
funkcję zwracającą WrappedPresent z rodzajowego zestawu do cokolwiek podklasa było.
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>
Co oznaczałoby to ograniczenie? Gdzie jest zarejestrowane to ogólne ograniczenie? Jak deklaruje się Wrapper? Jeśli jest to 'Wrapper', możemy zwrócić 'Wrapper ', maybe .. –
cmyr
Czy istnieje powód, dla którego nie znasz typu "Self" w tym czasie? Może po prostu nie myślę wystarczająco mocno. Zawsze możesz zastąpić "Self" rzeczywistą nazwą klasy – bjtitus
Dodałem przykład :). – Rengers