пятница, 4 сентября 2015 г.

#1147. Коротко. Крайне полезная функция

Предыдущая серия была тут - ToDo. Сделать тесты к скриптовым словам.

Сохраняет значение переменной.

Выполняет функтор (лямбду).

Восстанавливает значение переменной.

Вот она:

// SaveVarAndDo.ms.script

USES
 types.ms.dict
 core.ms.dict
 params.ms.dict
 macro.ms.dict
 io.ms.dict
 Documentation.ms.dict
 Testing.ms.dict
 Debug.ms.dict
;

Test&Dump SaveVarAndDoTest

PROCEDURE SaveVarAndDo
 VAR_REF RIGHT IN aVar
 FUNCTOR RIGHT IN aFunctor

 aVar |N Trace

 VAR l_OldValue
 l_OldValue := ( aVar |^ )
 l_OldValue Trace
 TRY
  aFunctor |^
 FINALLY
  aVar ^:= l_OldValue
 END
; // SaveVarAndDo

VAR A
A := '1'
A Trace

SaveVarAndDo A (
 A Trace
 'got it' Trace
 A := 2
 A Trace
)

A Trace

; // SaveVarAndDoTest

SaveVarAndDoTest

Это кстати из разряда вот чего - Изменение курсора и автоматическое восстановление при выходе из метода.

Комментариев нет:

Отправить комментарий