Zasadniczo Swift nie pozwala mi tego zrobić -Dlaczego właściwości przechowywane w klasach nie są obsługiwane w klasach?
// Właściwości przechowywane w klasach nieobsługiwane na zajęciach miały na myśli "statyczne".
class var hello = "hello"
Jednak to jest w porządku -
static var hi = "hi"
wiem, że różnica między klasy i statycznych w Swift jest to, że zmienne klasy nie mogą przechowywać zapisane właściwości, podczas gdy zmienne statyczne może. Jednak podstawowa różnica między zmiennymi klasowymi i statycznymi polega na tym, że zmienne statyczne nie mogą być nadpisywane w podklasach, podczas gdy zmienne klasy mogą. Jest to funkcja, którą chcę zachować.
wiem, że to prosta poprawka do tej kwestii jest, aby ta właściwość obliczona przy użyciu hacky poprawkę takiego -
class var Greeting : String {
return "Greeting"
}
to nie rozwiązuje problemu, i mam nadzieję, że to pomaga kilka osób, jak również online . Chciałbym jednak wiedzieć, czy ktokolwiek wie, dlaczego Swift zachowuje się w ten sposób i nie pozwala na przechowywanie właściwości w zmiennych na poziomie klasy.
Próbuję zrozumieć pytanie: Czy jesteś zaniepokojony o tym, dlaczego nie można użyć słowa kluczowego "class" z typem właściwości przechowywanej, mimo że słowo kluczowe 'statyczne' osiąga dokładnie to, co chcesz? Na marginesie, biorąc pod uwagę, że możesz mieć właściwości typu zarówno w typach "klasa", jak i "struct", czy nie byłoby dziwnie używać słowa kluczowego "class" w strukturze 'struct'? – Rob
Poza tym, że nie robi dokładnie tego, co opisuje pytanie, ponieważ wynik jest inny, jeśli masz podklasy. A ponieważ struktury nie mogą dziedziczyć, nie mają tu zastosowania. –
Porównaj https://stackoverflow.com/q/45467329/2976878 - Nie sądzę, że istnieje jakiś prawdziwy powód, dla którego nie jest to możliwe. – Hamish