Expression
Наследует: RefCounted < Object
Класс, хранящий выражение, которое вы можете выполнить.
Описание
Выражение может быть создано из любой арифметической операции, вызова встроенной математической функции, вызова метода переданного экземпляра или вызова встроенной конструкции типа.
Пример текста выражения с использованием встроенных математических функций может быть sqrt(pow(3, 2) + pow(4, 2)).
В следующем примере мы используем узел LineEdit для записи нашего выражения и отображения результата.
var expression = Expression.new()
func _ready():
$LineEdit.text_submitted.connect(self._on_text_submitted)
func _on_text_submitted(command):
var error = expression.parse(command)
if error != OK:
print(expression.get_error_text())
return
var result = expression.execute()
if not expression.has_execute_failed():
$LineEdit.text = str(result)
private Expression _expression = new Expression();
public override void _Ready()
{
GetNode<LineEdit>("LineEdit").TextSubmitted += OnTextEntered;
}
private void OnTextEntered(string command)
{
Error error = _expression.Parse(command);
if (error != Error.Ok)
{
GD.Print(_expression.GetErrorText());
return;
}
Variant result = _expression.Execute();
if (!_expression.HasExecuteFailed())
{
GetNode<LineEdit>("LineEdit").Text = result.ToString();
}
}
Обучающие материалы
Методы
execute(inputs: Array = [], base_instance: Object = null, show_error: bool = true, const_calls_only: bool = false) |
|
get_error_text() const |
|
has_execute_failed() const |
|
parse(expression: String, input_names: PackedStringArray = PackedStringArray()) |
Описания метода
Variant execute(inputs: Array = [], base_instance: Object = null, show_error: bool = true, const_calls_only: bool = false) 🔗
Выполняет выражение, которое было ранее проанализировано parse(), и возвращает результат. Перед использованием возвращенного объекта следует проверить, не завершился ли метод сбоем, вызвав has_execute_failed().
Если вы определили входные переменные в parse(), вы можете указать их значения в массиве inputs в том же порядке.
String get_error_text() const 🔗
Возвращает текст ошибки, если parse() или execute() завершились неудачей.
bool has_execute_failed() const 🔗
Возвращает true, если execute() не удалось.
Error parse(expression: String, input_names: PackedStringArray = PackedStringArray()) 🔗
Анализирует выражение и возвращает код Error.
При желании можно указать имена переменных, которые могут появляться в выражении с помощью input_names, чтобы можно было связать их при его выполнении.