github_url: | hide |
---|
Inherits: :ref:`RefCounted<class_RefCounted>` < :ref:`Object<class_Object>`
A class that stores an expression you can execute.
.. rst-class:: classref-introduction-group
An expression can be made of any arithmetic operation, built-in math function call, method call of a passed instance, or built-in type construction call.
An example expression text using the built-in math functions could be sqrt(pow(3, 2) + pow(4, 2))
.
In the following example we use a :ref:`LineEdit<class_LineEdit>` node to write our expression and show the result.
.. tabs:: .. code-tab:: gdscript 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) .. code-tab:: csharp 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(); } }
.. rst-class:: classref-introduction-group
.. rst-class:: classref-reftable-group
:ref:`Variant<class_Variant>` | :ref:`execute<class_Expression_method_execute>` ( :ref:`Array<class_Array>` inputs=[], :ref:`Object<class_Object>` base_instance=null, :ref:`bool<class_bool>` show_error=true, :ref:`bool<class_bool>` const_calls_only=false ) |
:ref:`String<class_String>` | :ref:`get_error_text<class_Expression_method_get_error_text>` ( ) |const| |
:ref:`bool<class_bool>` | :ref:`has_execute_failed<class_Expression_method_has_execute_failed>` ( ) |const| |
:ref:`Error<enum_@GlobalScope_Error>` | :ref:`parse<class_Expression_method_parse>` ( :ref:`String<class_String>` expression, :ref:`PackedStringArray<class_PackedStringArray>` input_names=PackedStringArray() ) |
.. rst-class:: classref-section-separator
.. rst-class:: classref-descriptions-group
.. rst-class:: classref-method
:ref:`Variant<class_Variant>` execute ( :ref:`Array<class_Array>` inputs=[], :ref:`Object<class_Object>` base_instance=null, :ref:`bool<class_bool>` show_error=true, :ref:`bool<class_bool>` const_calls_only=false )
Executes the expression that was previously parsed by :ref:`parse<class_Expression_method_parse>` and returns the result. Before you use the returned object, you should check if the method failed by calling :ref:`has_execute_failed<class_Expression_method_has_execute_failed>`.
If you defined input variables in :ref:`parse<class_Expression_method_parse>`, you can specify their values in the inputs array, in the same order.
.. rst-class:: classref-item-separator
.. rst-class:: classref-method
:ref:`String<class_String>` get_error_text ( ) |const|
Returns the error text if :ref:`parse<class_Expression_method_parse>` or :ref:`execute<class_Expression_method_execute>` has failed.
.. rst-class:: classref-item-separator
.. rst-class:: classref-method
:ref:`bool<class_bool>` has_execute_failed ( ) |const|
Returns true
if :ref:`execute<class_Expression_method_execute>` has failed.
.. rst-class:: classref-item-separator
.. rst-class:: classref-method
:ref:`Error<enum_@GlobalScope_Error>` parse ( :ref:`String<class_String>` expression, :ref:`PackedStringArray<class_PackedStringArray>` input_names=PackedStringArray() )
Parses the expression and returns an :ref:`Error<enum_@GlobalScope_Error>` code.
You can optionally specify names of variables that may appear in the expression with input_names
, so that you can bind them when it gets executed.