Moja klasa: moja klasa pobiera jeden parametr typu, i ma statyczną metodę, która nie korzysta z parametr typu:Czy konieczne jest przekazanie parametru typu do funkcji statycznych w klasie ogólnej?
class GenericClass<T> {
static func blub(x: Int) -> Int {
return x + 1
}
}
Mój problem: gdy próbuję użyć funkcji statycznego, mój kod nie kompilacji:
let z: Int = GenericClass.blub(4) // doesn't compile
mam wymyślić dwa obejścia:
dać
GenericClass
rodzajem argument - nie ma znaczenia, jaki rodzaj:let y: Int = GenericClass<Void>.blub(4)
utworzyć drugą klasę, która nie posiada żadnych parametrów typu, trzymać metody statyczne
Tak więc wiem, jak uruchomić kod, chociaż może nie być to optymalne rozwiązanie. Ale moje pytanie dotyczy tego, dlaczego Swift działa w ten sposób.
Moje pytanie:
Dlaczego nie let y: Int = GenericClass<Void>.blub(4)
skompilować?
Należy opracować ponieważ blub
jest sposób statyczny, a zatem nie powinny mieć żadnych interakcji z parametrami typu, które są wykorzystywane tylko do przypadkach, a nie metody statyczne lub zmienne. A przynajmniej tego się spodziewałem.
Gdzie ja się mylę? W jaki sposób parametry klas i metody statyczne klasy współdziałają w Swift?
Czy istnieje lepszy sposób rozwiązania tego problemu niż dwa obejścia, których próbowałem?
Zrzut ekranu:
Bardzo interesujący –
Twoje pytanie powinno być „Dlaczego nie' niech oo: Int = GenericClass.blub (4) 'kompilacji nie – OOPer
http://stackoverflow.com/questions/29700989/how-to-add -type-methods-to-generic-types-in-swift – BJHStudios