Na przykład, chciałbym wywołać metodę na instancji klasy, która doda do właściwości właściwość willSet
. Nie chcę określać wartości willSet
w deklaracji właściwości, ponieważ potrzebowałbym dodać logikę warunkową w obserwatorze i byłaby niepotrzebnie uruchamiana dla każdej innej instancji, która nie wywołała tej metody.Czy obserwator własności można dodać po początkowej deklaracji?
coś takiego:
var someProperty: Int
func someMethod() {
someProperty { // this is the syntax/ability I'm unsure about
willSet { ...add some behavior... }
}
...more stuff...
}
Ah, więc nie jest to funkcja natywna w sposobie, w jaki pytałem. To rozwiązanie nie omija dwóch problemów, których dotyczyłem: każda instancja będzie musiała uruchomić 'willSet' i wynikający z tego warunek. Miałem nadzieję, że w jakiś sposób instancje nie będą miały "woli", chyba że dodadzą tego obserwatora w jakimś późniejszym momencie. – solidcell
Czy martwi Cię wydajność? Ponieważ w powyższym przykładzie będziesz wykonywał tylko kod, jeśli opcjonalne zamknięcie nie jest zerowe, i sprawdzenie, czy zamknięcie! = Zero ma znikome konsekwencje wydajnościowe. – cmyr
Częściowo po to, by poznać język. Jednakże, na przykład, myślę o przypadku, w którym chciałbym dodać rozszerzenie, które zawiera pewną logikę, i że obserwator właściwości powinien zostać zgrupowany w tym samym rozszerzeniu. – solidcell