вторник, 11 октября 2016 г.

#1294. "А ваш язык так может?" №12. Как устроено слово TF (SaveVarAndDo)

UNIT SaveVarAndDo.ms.dict

USES
 types.ms.dict
 core.ms.dict
 params.ms.dict
 Documentation.ms.dict
;

/*PROCEDURE*/ : SaveVarAndDo
// - : т.к. aFunctor может оставлять значение на стеке
 VAR_REF RIGHT IN aVar
 FUNCTOR RIGHT IN aFunctor

 %SUMMARY '
 Сохраняет значение переменной aVar.
 Выполняет функтор aFunctor.
 Восстанавливает значение переменной aVar.
 '
 ; // %SUMMARY

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

WordAlias TF SaveVarAndDo
 %REMARK 'TF - сокращение от TRY..FINALLY'

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

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