Метапрограммирование
Метапрограммирование - это вид программирования, связанный с написанием программного кода, который в качестве результата порождает другой программный код. Метапрограммирование используется для повторной используемости кода и ускорения времени разработки.
Метакод
В языке lsFusion в качестве средства метапрограммирования используется метакод, который описывается инструкцией META
. Метакод состоит из заголовка и блока кода на языке lsFusion, описывающего последовательность инструкций. Этот блок кода должен завершаться ключевым словом END
. Рассмотрим пример метакода, который позволяет добавить на произвольную форму два действия:
META addActions(formName)
EXTEND FORM formName
PROPERTIES() showMessage, closeForm
;
END
В первой строке приведенного примера находится заголовок метакода. Он состоит из ключевого слова META
, имени метакода и списка параметров. В данном примере метакод addActions
имеет один параметр formName
. Это имя формы, на которую будут добавлены действия. Рассмотрим возможные варианты использования этого метакода, которые описываются инструкцией @
.
@addActions(documentForm);
@addActions(orderForm);
Инструкция использования метакода обозначается специальным символом @
, затем идет имя метакода и передаваемые параметры. При генерации кода каждый параметр метакода будет заменен на значение, передаваемое в качестве параметра инструкции @
, во всех местах использования параметра метакода. В данном примере параметр метакода formName
будет заменяться на documentForm
и на orderForm
. Приведенные выше использования метакода порождают следующий блок кода:
EXTEND FORM documentForm
PROPERTIES() showMessage, closeForm
;
EXTEND FORM orderForm
PROPERTIES() showMessage, closeForm
;