Files
godot-docs-l10n/classes/uk/class_expression.rst

159 lines
8.9 KiB
ReStructuredText
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

:github_url: hide
.. _class_Expression:
Expression
==========
**Успадковує:** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
Клас, який зберігає вираз, ви можете виконати.
.. rst-class:: classref-introduction-group
Опис
--------
Вираз може складатися з будь-якої арифметичної операції, виклику вбудованої математичної функції, виклику методу переданого екземпляра або виклику вбудованої конструкції типу.
Прикладом тексту виразу з використанням вбудованих математичних функцій може бути ``sqrt(pow(3, 2) + pow(4, 2))``.
У наступному прикладі ми використовуємо вузол :ref:`LineEdit<class_LineEdit>`, щоб написати наш вираз і показати результат.
.. 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 помилка != OK:
print(expression.get_error_text())
return
var result = expression.execute()
if no 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)
{
Erorr error = _expression.Parse(command);
if (error != Erorr. Ok)
{
GD.Print(_expression.GetErrorText());
return;
}
Variant result = _expression.Execute();
if (!_expression.HasExecuteFailed())
{
GetNode<LineEdit>("LineEdit").Text = result.ToString();
}
}
.. rst-class:: classref-introduction-group
Посібники
------------------
- :doc:`Оцінювання виразів <../tutorials/scripting/evaluating_expressions>`
.. rst-class:: classref-reftable-group
Методи
------------
.. table::
:widths: auto
+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Variant<class_Variant>` | :ref:`execute<class_Expression_method_execute>`\ (\ inputs\: :ref:`Array<class_Array>` = [], base_instance\: :ref:`Object<class_Object>` = null, show_error\: :ref:`bool<class_bool>` = true, const_calls_only\: :ref:`bool<class_bool>` = 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>`\ (\ expression\: :ref:`String<class_String>`, input_names\: :ref:`PackedStringArray<class_PackedStringArray>` = PackedStringArray()\ ) |
+---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
Описи методів
--------------------------
.. _class_Expression_method_execute:
.. rst-class:: classref-method
:ref:`Variant<class_Variant>` **execute**\ (\ inputs\: :ref:`Array<class_Array>` = [], base_instance\: :ref:`Object<class_Object>` = null, show_error\: :ref:`bool<class_bool>` = true, const_calls_only\: :ref:`bool<class_bool>` = false\ ) :ref:`🔗<class_Expression_method_execute>`
Виконує вираз, який раніше був проаналізований методом :ref:`parse()<class_Expression_method_parse>`, та повертає результат. Перш ніж використовувати повернутий об'єкт, слід перевірити, чи не виникла помилка методу, викликавши його :ref:`has_execute_failed()<class_Expression_method_has_execute_failed>`.
Якщо ви визначили вхідні змінні в :ref:`parse()<class_Expression_method_parse>`, ви можете вказати їхні значення в масиві inputs у тому ж порядку.
.. rst-class:: classref-item-separator
----
.. _class_Expression_method_get_error_text:
.. rst-class:: classref-method
:ref:`String<class_String>` **get_error_text**\ (\ ) |const| :ref:`🔗<class_Expression_method_get_error_text>`
Повертає текст помилки, якщо :ref:`parse()<class_Expression_method_parse>` або :ref:`execute()<class_Expression_method_execute>` не вдалося.
.. rst-class:: classref-item-separator
----
.. _class_Expression_method_has_execute_failed:
.. rst-class:: classref-method
:ref:`bool<class_bool>` **has_execute_failed**\ (\ ) |const| :ref:`🔗<class_Expression_method_has_execute_failed>`
Повертає ``true``, якщо :ref:`execute()<class_Expression_method_execute>` не вдалося.
.. rst-class:: classref-item-separator
----
.. _class_Expression_method_parse:
.. rst-class:: classref-method
:ref:`Error<enum_@GlobalScope_Error>` **parse**\ (\ expression\: :ref:`String<class_String>`, input_names\: :ref:`PackedStringArray<class_PackedStringArray>` = PackedStringArray()\ ) :ref:`🔗<class_Expression_method_parse>`
Розбирає вираз і повертає код :ref:`Error<enum_@GlobalScope_Error>`.
За потреби можна вказати імена змінних, які можуть з'являтися у виразі, за допомогою ``input_names``. щоб ви могли зв'язати їх під час виконання.
.. |virtual| replace:: :abbr:`virtual (Зазвичай, цей метод перевизначається користувачем, щоб він мав вплив.)`
.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
.. |const| replace:: :abbr:`const (Цей метод не має побічних ефектів. Не змінює ніяку змінну екземпляра об'єкта.)`
.. |vararg| replace:: :abbr:`vararg (Цей метод приймає будь-яке число аргументів після описаних тут.)`
.. |constructor| replace:: :abbr:`constructor (Цей метод використовується для побудови типів.)`
.. |static| replace:: :abbr:`static (Цей метод не потребує екземпляра для виклику, його можна викликати безпосередньо за допомогою назви класу.)`
.. |operator| replace:: :abbr:`operator (Цей метод описує дійсний оператор для взаємодії з цим типом як з лівим операндом.)`
.. |bitfield| replace:: :abbr:`BitField (Це значення є цілим числом, складеним у вигляді бітової маски з наступних прапорів.)`
.. |void| replace:: :abbr:`void (Значення не повертається.)`