PROGRAM CacheFunction.ms.script
USES
axiom_push.ms.dict
;
USES
Testing.ms.dict
;
Test&Dump CacheFunction.ms.script.test
: Cache.do
TtfwWord IN aCacheWhere
%REMARK 'Где кешировать результат'
TtfwWord IN aCacheWhat
%REMARK 'Что кешировать'
^ IN aLambda
%REMARK 'Лямбда, которая вычисляет результат'
aCacheWhere pop:Word:Name Log
STRING VAR l_CacheWhat
'cached:' aCacheWhat pop:Word:Name Cat >>> l_CacheWhat
l_CacheWhat Log
VAR l_FieldVar
aCacheWhere %% l_CacheWhat >>> l_FieldVar
l_FieldVar Log
aLambda DO
; // Cache.do
MACRO Cache
axiom:PushSymbol @SELF
axiom:PushSymbol Cache.do
; // Cache
: A
STRING FUNCTION X
'1' >>> Result
; // X
ERROR 'fake A'
; // A
: B
STRING FUNCTION X
'2' >>> Result
; // X
ERROR 'fake B'
; // B
STRING FUNCTION X
TtfwWord IN aWord
aWord Cache ( aWord %% 'X' pop:Word:Name ) >>> Result
; // X
@ A DumpElement
@ B DumpElement
@ A X .
@ B X .
@ A DumpElement
@ B DumpElement
@ A X .
@ B X .
@ A DumpElement
@ B DumpElement
; // CacheFunction.ms.script.test
CacheFunction.ms.script.test
Заметки о тестировании, программировании и прочий "поток сознания", который жалко писать "в стол"
суббота, 28 ноября 2015 г.
#1201. Кеширование результата функции. Шаг 5. Только код
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий