2017-07-28 33 views
6

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.

+2

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

+0

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. –

+0

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

Odpowiedz

0

Wygląda swift has not implemented jeszcze zakładając jak za błąd kompilatora

"Class przechowywane posiadających nie jest obsługiwana w klasie"

enter image description here

Powiązane problemy