:github_url: hide .. DO NOT EDIT THIS FILE!!! .. Generated automatically from Godot engine sources. .. Generator: https://github.com/godotengine/godot/tree/4.2/doc/tools/make_rst.py. .. XML source: https://github.com/godotengine/godot/tree/4.2/doc/classes/Expression.xml. .. _class_Expression: Expression ========== **Inherits:** :ref:`RefCounted` **<** :ref:`Object` A class that stores an expression you can execute. .. rst-class:: classref-introduction-group Description ----------- 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` 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").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").Text = result.ToString(); } } .. rst-class:: classref-introduction-group Tutorials --------- - :doc:`Evaluating Expressions <../tutorials/scripting/evaluating_expressions>` .. rst-class:: classref-reftable-group Methods ------- .. table:: :widths: auto +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Variant` | :ref:`execute` **(** :ref:`Array` inputs=[], :ref:`Object` base_instance=null, :ref:`bool` show_error=true, :ref:`bool` const_calls_only=false **)** | +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`get_error_text` **(** **)** |const| | +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`has_execute_failed` **(** **)** |const| | +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Error` | :ref:`parse` **(** :ref:`String` expression, :ref:`PackedStringArray` input_names=PackedStringArray() **)** | +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Method Descriptions ------------------- .. _class_Expression_method_execute: .. rst-class:: classref-method :ref:`Variant` **execute** **(** :ref:`Array` inputs=[], :ref:`Object` base_instance=null, :ref:`bool` show_error=true, :ref:`bool` const_calls_only=false **)** Executes the expression that was previously parsed by :ref:`parse` and returns the result. Before you use the returned object, you should check if the method failed by calling :ref:`has_execute_failed`. If you defined input variables in :ref:`parse`, you can specify their values in the inputs array, in the same order. .. rst-class:: classref-item-separator ---- .. _class_Expression_method_get_error_text: .. rst-class:: classref-method :ref:`String` **get_error_text** **(** **)** |const| Returns the error text if :ref:`parse` or :ref:`execute` has failed. .. rst-class:: classref-item-separator ---- .. _class_Expression_method_has_execute_failed: .. rst-class:: classref-method :ref:`bool` **has_execute_failed** **(** **)** |const| Returns ``true`` if :ref:`execute` has failed. .. rst-class:: classref-item-separator ---- .. _class_Expression_method_parse: .. rst-class:: classref-method :ref:`Error` **parse** **(** :ref:`String` expression, :ref:`PackedStringArray` input_names=PackedStringArray() **)** Parses the expression and returns an :ref:`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. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)` .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)` .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)` .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` .. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)`