Expression
Разбор и вычисление выражений с именованными входами.
Разбирает выражение в Parse и вычисляет его в Execute с позиционными входами Variant. Это отдельный язык выражений, не интерпретатор C#. Сначала проверьте Error от Parse, затем HasExecuteFailed после Execute и тип результата. Nil может быть корректным результатом. GetErrorText может сохранить старую ошибку после успешного Execute. constCallsOnly ограничивает вызовы методов объектов, но не изолирует произвольный чужой код.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
ExpressionКонструктор
public Expression();Методы5
ExecuteVariant
public Variant Execute(Reckfell.Collections.Array inputs = null, ReckfellObject baseInstance = null, bool showError = true, bool constCallsOnly = false);Вычисляет успешно разобранное выражение. После вызова проверяйте HasExecuteFailed; текст старой ошибки не является признаком текущего сбоя. Для повторного вычисления можно передать новые значения без повторного Parse.
| Имя | Тип | По умолчанию |
|---|---|---|
inputs | Reckfell.Collections.Array | null |
baseInstance | ReckfellObject | null |
showError | bool | true |
constCallsOnly | bool | false |
inputsЗначения в порядке inputNames из Parse. Обращение выражения к отсутствующему входу вызывает ошибку выполнения. null задаёт пустой массив.
baseInstanceОбъект для неявного обращения к его методам и свойствам. null не предоставляет такого объекта; это не ограничение всех встроенных функций выражения.
showErrorПри true обычная ошибка вычисления также печатается движком. false позволяет обработать её через HasExecuteFailed/GetErrorText; не делает ошибочное вычисление успешным.
constCallsOnlyРазрешает только константные вызовы методов объектов через Variant. Не отключает все встроенные функции и не гарантирует изоляцию, отсутствие побочных эффектов или лимит ресурсов.
VariantРезультат Variant. Nil допустим как значение и сам по себе не означает ошибку. При HasExecuteFailed=true не используйте результат как успешное вычисление.
GetErrorTextstring
public string GetErrorText();Возвращает диагностический текст. Parse очищает его, но успешный Execute не обязан очищать текст предыдущего сбоя. Сначала проверьте текущий статус операции.
stringТекст ошибки разбора или выполнения; может быть пустым либо устаревшим после успешного Execute.
HasExecuteFailedbool
public bool HasExecuteFailed();Проверяйте сразу после Execute. Ошибку Parse определяйте по возвращённому Error, а не этим методом.
booltrue, если последнее Execute завершилось ошибкой; false после успешного выполнения, даже если результат Nil.
Parse2 перегрузки
public Error Parse(string expression, ReadOnlySpan<string> inputNames);Заменяет ранее разобранное выражение и очищает текст ошибки. Имена задают порядок значений будущего Execute. При ошибке разбора не вызывайте Execute.
| Имя | Тип | По умолчанию |
|---|---|---|
expression | string | — |
inputNames | ReadOnlySpan<string> | — |
expressionСтрока на языке Expression. Литералы, операторы и доступные вызовы не являются синтаксисом произвольного C#-кода.
inputNamesИмена входных значений в порядке будущего массива Execute. Пустой span задаёт выражение без именованных входов.
ErrorError.Ok при успешном разборе; Error.InvalidParameter при ошибке синтаксического разбора. Для диагностики прочитайте GetErrorText.
public Error Parse(string expression, string[] inputNames = null);Заменяет ранее разобранное выражение и очищает текст ошибки. Имена задают порядок значений будущего Execute. При ошибке разбора не вызывайте Execute.
| Имя | Тип | По умолчанию |
|---|---|---|
expression | string | — |
inputNames | string[] | null |
expressionСтрока на языке Expression. Литералы, операторы и доступные вызовы не являются синтаксисом произвольного C#-кода.
inputNamesИмена входных значений в порядке будущего массива Execute. null означает пустой список.
ErrorError.Ok при успешном разборе; Error.InvalidParameter при ошибке синтаксического разбора. Для диагностики прочитайте GetErrorText.