Chciałbym pokornie zapytać ...var lub ref/atom/agent dla stałych wartości?
Co, "var lub ref/atom/agent dla stałych wartości?", Pytam? Oczywiście używam vars dla stałych wartości.
Ale zawsze zastanawiałem się, który powinienem używać, gdy wartości działają jak stałe, ale powinny być przypisane w czasie wykonywania, a nie w czasie kompilacji (kiedy kody są czytane).
Na przykład pomyśl o niektórych właściwościach języka Java zapisanych w pliku konfiguracyjnym użytkownika. Powinny być przypisane w czasie wykonywania, ponieważ dane nie znajdują się w kodach. Należy je jednak zdefiniować przed odczytaniem danych, ponieważ inne kody je odsyłają.
W tym przypadku
kiedy używać 'var użytkownika ?:
- zdefiniować' var, albo po prostu zadeklarować „var'S (kiedy to jest w porządku).
- A następnie ponownie zdefiniuję te zmienne za pomocą funkcji, które odczytują pliki opcji.
- Ale trudno jest nadpisać "var" lub czuć się dziwnie, aby zdefiniować funkcje wewnętrzne var.
kiedy mogę używać ref/Atom/agenta ?:
- przypisać Ref/atom/agentów „var jest.
- Następnie aktualizuję te ref/atom/agent przez funkcje, które odczytują pliki opcji.
- Ale ponieważ wartości są używane w całym programie, więc martwię się o ich koszty.
- ... i używanie zbyt wielu makr @ jest dość denerwujące.
Nie wiem, co powinienem użyć.
Czego używasz w tych przypadkach?
"var? "ref/atom/agent's? czy nawet "opóźnienie"?
Z góry dziękuję.
Dlaczego nie zdefiniujesz zmiennego synchronicznie w pierwszym wierszu po uruchomieniu programu? w tym przypadku nie musisz nadpisywać tego var gdzie indziej, po drugiej stronie, jeśli denerwujesz się przez pisanie '@ my-var' wszędzie można zdefiniować funkcję opakowania, która zwraca' @ my-var' – hsestupin
Dzięki za odpowiedź. Jak mogę zdefiniować mój var synchronicznie? Nie sądzę, że rozumiem, co masz na myśli. Sądziłem, że vary nie są czymś synchronicznym. Czy chodziło ci o przypisanie poprawek do zmiennych i zresetowanie (zaktualizowanie) certyfikatów do inicjowania? –
Mam na myśli, że w twojej przestrzeni nazw 'ns.with-const' z tą stałą pierwszą linią kodu będzie' (def my-const (some-computations)) '. Dopóki to wyrażenie nie będzie oceniać wszystkich przestrzeni nazw, które spróbują użyć lub wymagają 'ns.with-const', nie rozpocznie się ich własny kod. I nie ma warunków wyścigowych w tym modelu. Kiedy twoja stała zostanie obliczona - staje się zdefiniowana i wszystko działa dobrze. Mam nadzieję, że to wyjaśnienie ma sens – hsestupin