mam ten kod:metody nadklasy wrócić typu podklasy w Swift
class Dark: NSObject {
class var className: String {
return NSStringFromClass(self)!.componentsSeparatedByString(".").last!
}
var success = 0
class func devour<T: Dark>(params: Int) -> T {
var s = T()
return assign(s, params: params)
}
class func assign<T: Dark>(item: T, params: Int) -> T{
if item.dynamicType === self {
item.success = params
}
return item
}
}
class Black: Dark {
}
class Violet: Dark {
}
Black.className // returns "Black"
Violet.className // returns "Violet"
Problem pojawia się, kiedy to zrobić:
var ret = Black.devour(5)
ret.success //returns 0 which I expect to be 5
ret.self // returns {Dark success 0} which I expect to be {Black success 0}
Problem polega na tym, że gdy podklasa wykorzystuje metodę dziedziczoną devour, zwraca obiekt typu Dark
. Chcę móc zwrócić typ podklasy, a nie typ nadklasy podczas wywoływania pożera. Przykład kiedy zrobić:
var ret = Black.devour(5)
Klasa ret powinny być klasy Black
i nie stanowi klasę Dark
.
Mam nadzieję, że ktoś może mi w tym pomóc. Naprawdę nie mam pomysłów. Dzięki! Chcę uniknąć łańcuchów i uważam to za ostateczność.
Jaki jest dokładnie Twój problem? Dziennik błędów. –
Zobacz http://stackoverflow.com/questions/26296938/returning-a-subclass-from-its-base-class-in-swift –
hi @RobinEllerkmann: Problem polega na tym, że kiedy podklasa używa metody dziedziczenia, zwraca obiekt typu Dark. Chcę być w stanie zwrócić typ podklasy, a nie typ nadklasy podczas wywoływania pożerać – oregon