:github_url: hide .. _class_bool: bool ==== Встроенный логический тип. .. rst-class:: classref-introduction-group Описание ---------------- **bool** — это встроенный тип :ref:`Variant`, который может хранить только одно из двух значений: ``true`` или ``false``. Вы можете представить его как переключатель, который может быть включен или выключен, или как двоичную цифру, которая может быть 1 или 0. Булевы значения можно напрямую использовать в ``if`` и других условных операторах: .. tabs:: .. code-tab:: gdscript var can_shoot = true if can_shoot: launch_bullet() .. code-tab:: csharp bool canShoot = true; if (canShoot) { LaunchBullet(); } Все операторы сравнения возвращают логические значения (``==``, ``>``, ``<=`` и т. д.). Таким образом, нет необходимости сравнивать сами логические значения. Вам не нужно добавлять ``== true`` или ``== false``. Логические значения можно комбинировать с логическими операторами ``and``, ``or``, ``not`` для создания сложных условий: .. tabs:: .. code-tab:: gdscript if bullets > 0 and not is_reloading(): launch_bullet() if bullets == 0 or is_reloading(): play_clack_sound() .. code-tab:: csharp if (bullets > 0 && !IsReloading()) { LaunchBullet(); } if (bullets == 0 || IsReloading()) { PlayClackSound(); } \ **Примечание:** В современных языках программирования логические операторы оцениваются по порядку. Все оставшиеся условия пропускаются, если их результат не повлияет на конечное значение. Эта концепция известна как `оценка короткого замыкания `__ и может быть полезна для избежания оценки дорогостоящих условий в некоторых критических для производительности случаях. \ **Примечание:** По соглашению встроенные методы и свойства, возвращающие логические значения, обычно определяются как вопросы типа «да-нет», отдельные прилагательные или тому подобное (:ref:`String.is_empty()`, :ref:`Node.can_process()`, :ref:`Camera2D.enabled` и т. д.). .. rst-class:: classref-reftable-group Конструкторы ------------------------ .. table:: :widths: auto +-------------------------+----------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`bool`\ (\ ) | +-------------------------+----------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`bool`\ (\ from\: :ref:`bool`\ ) | +-------------------------+----------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`bool`\ (\ from\: :ref:`float`\ ) | +-------------------------+----------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`bool`\ (\ from\: :ref:`int`\ ) | +-------------------------+----------------------------------------------------------------------------------+ .. rst-class:: classref-reftable-group Операторы ------------------ .. table:: :widths: auto +-------------------------+-----------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`operator !=`\ (\ right\: :ref:`bool`\ ) | +-------------------------+-----------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`operator \<`\ (\ right\: :ref:`bool`\ ) | +-------------------------+-----------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`operator ==`\ (\ right\: :ref:`bool`\ ) | +-------------------------+-----------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`operator >`\ (\ right\: :ref:`bool`\ ) | +-------------------------+-----------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Описания конструктора ------------------------------------------ .. _class_bool_constructor_bool: .. rst-class:: classref-constructor :ref:`bool` **bool**\ (\ ) :ref:`🔗` Создает **bool** со значением ``false``. .. rst-class:: classref-item-separator ---- .. rst-class:: classref-constructor :ref:`bool` **bool**\ (\ from\: :ref:`bool`\ ) Создает **bool** как копию заданного **bool**. .. rst-class:: classref-item-separator ---- .. rst-class:: classref-constructor :ref:`bool` **bool**\ (\ from\: :ref:`float`\ ) Привести значение :ref:`float` к логическому значению. Возвращает ``false``, если ``from`` равен ``0.0`` (включая ``-0.0``), и ``true`` для всех других значений (включая :ref:`@GDScript.INF` и :ref:`@GDScript.NAN`). .. rst-class:: classref-item-separator ---- .. rst-class:: classref-constructor :ref:`bool` **bool**\ (\ from\: :ref:`int`\ ) Привести значение :ref:`int` к логическому значению. Возвращает ``false``, если ``from`` равен ``0``, и ``true`` для всех остальных значений. .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Описания оператора ------------------------------------ .. _class_bool_operator_neq_bool: .. rst-class:: classref-operator :ref:`bool` **operator !=**\ (\ right\: :ref:`bool`\ ) :ref:`🔗` Возвращает ``true``, если два булевых значения не равны. То есть одно из них ``true``, а другое ``false``. Эту операцию можно рассматривать как логическое XOR. .. rst-class:: classref-item-separator ---- .. _class_bool_operator_lt_bool: .. rst-class:: classref-operator :ref:`bool` **operator <**\ (\ right\: :ref:`bool`\ ) :ref:`🔗` Возвращает ``true`` , если левый операнд равен ``false``, а правый операнд равен ``true``. .. rst-class:: classref-item-separator ---- .. _class_bool_operator_eq_bool: .. rst-class:: classref-operator :ref:`bool` **operator ==**\ (\ right\: :ref:`bool`\ ) :ref:`🔗` Возвращает ``true``, если два булевых значения равны. То есть оба ``true`` или оба ``false``. Эту операцию можно рассматривать как логическое EQ или XNOR. .. rst-class:: classref-item-separator ---- .. _class_bool_operator_gt_bool: .. rst-class:: classref-operator :ref:`bool` **operator >**\ (\ right\: :ref:`bool`\ ) :ref:`🔗` Возвращает ``true``, если левый операнд равен ``true``, а правый операнд равен ``false``. .. |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 (Нет возвращаемого значения.)`