:github_url: hide .. DO NOT EDIT THIS FILE!!! .. Generated automatically from Godot engine sources. .. Generator: https://github.com/godotengine/godot/tree/master/doc/tools/make_rst.py. .. XML source: https://github.com/godotengine/godot/tree/master/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`\ (\ inputs\: :ref:`Array` = [], base_instance\: :ref:`Object` = null, show_error\: :ref:`bool` = true, const_calls_only\: :ref:`bool` = false\ ) | +---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`get_error_text`\ (\ ) |const| | +---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`has_execute_failed`\ (\ ) |const| | +---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Error` | :ref:`parse`\ (\ expression\: :ref:`String`, input_names\: :ref:`PackedStringArray` = PackedStringArray()\ ) | +---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Method Descriptions ------------------- .. _class_Expression_method_execute: .. rst-class:: classref-method :ref:`Variant` **execute**\ (\ inputs\: :ref:`Array` = [], base_instance\: :ref:`Object` = null, show_error\: :ref:`bool` = true, const_calls_only\: :ref:`bool` = false\ ) :ref:`🔗` 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| :ref:`🔗` 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| :ref:`🔗` Returns ``true`` if :ref:`execute` has failed. .. rst-class:: classref-item-separator ---- .. _class_Expression_method_parse: .. rst-class:: classref-method :ref:`Error` **parse**\ (\ expression\: :ref:`String`, input_names\: :ref:`PackedStringArray` = PackedStringArray()\ ) :ref:`🔗` 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.)` .. |void| replace:: :abbr:`void (No return value.)`