UniCache
Uniwersalna pamięć podręczna

Składnia

UniCache(parWyrazenie,parZmienne)

Parametry

parWyrazenie

Wyrażenie w j.Clarion do ewaluacji.


Alternatywnie komenda narzędziowa:

- CLEAN - wywołanie czyszczenia starych zapisów,

- CLEAR - wyczyszczenie pamięci podręcznej,

- COUNT - liczba wpisów w pamięci,

- WMS - podgląd pamięci,

- TIME - ustaw czas ważności danej, domyślnie 200 (x 1/100 sekundy).

parZmienne

Lista zmiennych, od których zależy wynik wyrażenia w formacie fromString, np. ZAS:ID_ZAS|GLO:DataAkt

Alternatywnie parametr:

- AUTO - powoduje, że na podstawie wyrażenia funkcja spróbuje sama określić listę zmiennych,

- w przypadku komendy TIME liczba setnych sekundy.

zwraca

Wynik ewaluacji wyrażenia.

Opis

Funkcja oferuje uniwersalną pamięć podręczną, tj. zapamiętywanie wyników wyrażeń i przywołanie tych wyników przy następnym wywołaniu funkcji dla tego samego wyrażenia i zmiennych.


Z uwagi na to, że wyrażenia najczęściej zawierają zmienne (np. ZasPole(ZAS:ID_ZAS,'ZAS:Powierzchnia',GLO:DataAkt) ), wartość tych zmiennych powinna również być uwzględniana przy zapamiętywaniu wyniku. W tym przypadku listę zmiennych wyrażałby ciąg: ZAS:ID_ZAS|GLO:DataAkt.


W przypadku wywołania funkcji, gdzie wszystkie zmienne, od których zależy wynik, są wypisane w kodzie, można spróbować zastosować opcję AUTO - wtedy program samodzielnie utworzy listę zmiennych i określi ich wartość jako kryterium pamięci.


Jeśli wynik wyrażenia zależy również od zmiennych niejawnych (np. niektóre funkcje we wzorach medialnych lub czynszowych pobierające niejawnie id karty czy zasobu), należałoby manualnie dopisać takie zmienne na liście zmiennych.


Pamięć podręczna jest szczególnie przydatna, gdy wiadomo, że dana funkcja jest wywoływana wielokrotnie dla takich samych parametrów i chcemy oszczędzić czasu na wyliczaniu ponownie tego samego wyniku.


Przykłady

UniCache('ZasPole(ZAS:ID_ZAS,''ZAS:Powierzchnia'',GLO:DataAkt)','AUTO')
=> '12.34'

UniCache('ZasPole(ZAS:ID_ZAS,''ZAS:Powierzchnia'',GLO:DataAkt)','ZAS:ID_ZAS|GLO:DataAkt')
=> '12.34'

Zobacz również:

-