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
aCacheWhat pop:Word:Name >>> l_CacheWhat
l_CacheWhat 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 X .
@ B X .
; // CacheFunction.ms.script.test
CacheFunction.ms.script.test
Заметки о тестировании, программировании и прочий "поток сознания", который жалко писать "в стол"
суббота, 28 ноября 2015 г.
#1200. Кеширование результата функции. Шаг 4. Только код
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий