Eval

From SunFlurry wiki
Jump to: navigation, search
  Eval (Системные функции)
Объект:Функции общего назначения
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Нет
Исключения:Невозможно превратить в строку, ошибка в выражении, ошибка при исполнении
Визуальность:Нет

Функция производит компиляцию и вычисление выражения, заданного на внутреннем языке. Выражение исполняется в контексте текущей функции с доступом к именам, совпадающим с доступом из кода, вызвавшего функцию. Функция вызывает прерывание, если аргумент не может быть скомпилирован из-за ошибки, либо он не является вычисляемым выражением. Функция возвращает результат вычисления выражения. Функция может использоваться для вычисления функций с произвольным количеством аргументов (фильтры базы данных), исполнения кода из внешнего файла и т.д.

Синтаксис

Eval(<Выражение для вычисления (STRING)>):<Результат вычисления выражения>

Аргументы

  • <Выражение для вычисления (STRING)> - Произвольное вычисляемое выражение, может содержать имена функций, переменных, операции, магические функции.

Возвращаемое значение

Возвращает значение, полученное в результате вычисления заданного выражения.

Примеры

//Иногда возникает необходимость получения значения переменных с определенными именами по индексу или суффиксу
//       что было бы неудобно сделать обычный способом
Var Стр1 Export,Стр2 Export,Стр3 Export,Стр4 Export,Стр5 Export,Стр6 Export,Стр7 Export,Стр8 Export,Стр9 Export,Стр10 Export;

  Function ПолучитьЗначениеПеременной(i)
    Exit Eval("Стр"+i);
  EndFunction

//Заполнение группы переменных из цикла
For i:=1 To 10 Do
  Exec("Стр"+i+":="+(i*2));
EndDo;

//Получаем значение переменной по индексу
//В лог будет выведено: 10
Message(ПолучитьЗначениеПеременной(5));