Перейти к основному содержимому
Версия: 4.x

Оператор 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(); }