Mam struktura z niektórymi zmiennymi statycznymi, które muszę korzystać w całym moim aplikacji (ja jeszcze nie używałem jednoczęściowa klasa, bo w przyszłości może potrwać kilka egzemplarzy, ale teraz mam tylko jeden egzemplarz).
Każdej zmiennej statycznej ustawiany jest domyślny, ale wartości te zmieniają się w ciągu całego okresu użytkowania aplikacji. Ja również zapisuję te zmiany w działaniach użytkownika, aby przetrwały między połączeniami, ale ja wciąż używam te zmienne statyczne, bo nie chcę za każdym razem czytać z działań użytkownika.
Teraz potrzebuję opcję, aby zresetować wszystkie te wartości do ich pierwotnych wartości domyślnych, a ja nie mogę zrozumieć, jak to zrobić poprawnie. Mogę korzystać z oddzielną strukturę, która będzie zawierać wartości domyślne, a następnie użyć funkcji do zmiany wartości z jednego na odpowiednią zmienną w innym. Ale to chyba nie jest tak elegancki, i musi być bardziej przyjemny sposób, aby to zrobić, którego mi brakuje.
Próbowałem dodać funkcję wewnątrz struktury, która wykonuje następujące czynności:
func resetDefaults() {
self = DefaultStruct()
}
Kompilator powiedział mi, że nie mogę zmienić siebie i musi zmienić funkcję. Więc tak zrobiłem. Ale potem w innym miejscu mojego kodu, w innej klasie, funkcja ta nie wchodzi w zakres. Jeśli dodam:
DefaultStruct.resetDefaults()
To daje mi inne błędy, takie jak:
Instance member 'resetDefaults' cannot be used on type 'DefaultStruct'; did you mean to use a value of this type instead?
Ponadto, ponieważ bezpośrednio używam zmienne statyczne tej struktury, nigdy nie инициализировал tę strukturę. Innymi słowy, u mnie nie ma takiej struktury według nazwy, do której mógłbym uzyskać dostęp w innym miejscu. Lub, być może, ja tu się mylę i coś mi umknęło???
Twoja pomoc była bym bardzo wdzięczna. Albo brakuje mi czegoś bardzo prostego, albo ja po prostu będę korzystać z oddzielną strukturę z domyślnymi wartościami, jak wspomniałem wcześniej.
Dziękuję!