Apple ma ładne wyjaśnienie metod Type (Class): Here.Metody typu wywoływania w ramach metody instancji
Jednak ich przykład wygląda następująco:
class SomeClass {
class func someTypeMethod() {
// type method implementation goes here
}
}
SomeClass.typeMethod()
widzę dokładnie ten sam przykład parroted wszędzie.
Muszę jednak wywołać moją metodę typu z instancji mojej klasy, która nie wydaje się być obliczana.
muszę robić coś złego, ale zauważyłem, że Apple nie obsługuje jeszcze właściwości klasy :(. Zastanawiam się, czy idę do Drywell dla wody.
Oto co próbowałem (w plac zabaw dla dzieci):.
class ClassA
{
class func staticMethod() -> String { return "STATIC" }
func dynamicMethod() -> String { return "DYNAMIC" }
func callBoth() -> (dynamicRet:String, staticRet:String)
{
var dynamicRet:String = self.dynamicMethod()
var staticRet:String = ""
// staticRet = self.class.staticMethod() // Nope
// staticRet = class.staticMethod() // No way, Jose
// staticRet = ClassA.staticMethod(self) // Uh-uh
// staticRet = ClassA.staticMethod(ClassA()) // Nah
// staticRet = self.staticMethod() // You is lame
// staticRet = .staticMethod() // You're kidding, right?
// staticRet = this.staticMethod() // What, are you making this crap up?
// staticRet = staticMethod() // FAIL
return (dynamicRet:dynamicRet, staticRet:staticRet)
}
}
let instance:ClassA = ClassA()
let test:(dynamicRet:String, staticRet:String) = instance.callBoth()
Czy ktoś ma pojęcia dla mnie
Jesteś absolutnie poprawne. Nie mam pojęcia, dlaczego nie próbowałem tego. Sprawdzę cię, gdy tylko minie limit czasu, Speedy Gonzales. –
Właśnie zdałem sobie sprawę, dlaczego nie próbowałem tego. Autouzupełnianie wymaga wstawienia instancji ClassA tam, kiedy to robię. Nie wiem, dlaczego ... –
self.dynamicType.staticMethod() nie działa dla mnie. –