Оператор EVAL
Оператор EVAL
- создание действия, выполняющего код на языке lsFusion.
Синтаксис
EVAL [ACTION] expression [PARAMS paramExpr1, ..., paramExprN]
Описание
Оператор EVAL
предназначен для выполнения программного кода во время работы сервера. Оператор принимает в качестве аргумента строку, в которой содержится исходный код. Эта строка может быть представлена как простой строковой константой, так и более сложным выражением, значением которого является строка.
Переданный код должен представлять из себя последовательность инструкций (или операторов-действий и объявлений локальных свойств, если задана опция ACTION
). Этот код при выполнении действия вставляется в модуль с уникальным именем. Заголовок этого модуля формируется системой, он объявляет уникальное имя модуля и в инструкции REQUIRE
перечисляет все модули, которые есть в проекте. Таким образом, из кода, который передается в оператор EVAL
, можно использовать все элементы системы из других модулей. Если опция ACTION
не задана, предполагается, что одной из переданных инструкций будет создание действия с именем run
(именно это действие и будет выполняться).
Параметры
-
expression
Выражение, значением которого является строка, которую необходимо выполнить.
-
ACTION
Ключевое слово.
-
paramExpr1, ..., paramExprN
Список выражений, значения которых будут передаваться выполняемому действию в качестве аргументов. Количество выражений должно соответствовать количеству параметров выполняемого действия.
Примеры
// исходный код, состоящий из одной инструкции, задается строковой константой
addProperty { EVAL ACTION 'MESSAGE \'Hello World\''; }
// свойство, в которое пользователь может ввести исходный код
code 'Исходные код' = DATA BPSTRING[2000] ();
// действие, выполняющее этот код
execute 'Выполнить код' { EVAL code(); }