Menu
CoddyTech

Сокращенные вычисления

Часть раздела Основы путешествия по Lua на Coddy. Урок 23 из 90.

Когда Lua вычисляет операторы and и or, она использует правило, называемое вычислением с коротким замыканием. Это означает, что Lua прекращает вычисления, как только узнаёт окончательный результат, и может полностью пропустить части выражения.

Для оператора and, если первое условие — false, Lua сразу понимает, что всё выражение будет равно false, и не проверяет второе условие:

playerAlive = false
hasWeapon = true

canFight = playerAlive and hasWeapon
-- Lua проверяет только playerAlive (false) и никогда не вычисляет hasWeapon

Аналогично, для оператора or, если первое условие — true, Lua знает, что результат будет true, и пропускает второе условие:

hasKey = true
hasPassword = false

canEnter = hasKey or hasPassword
-- Lua проверяет только hasKey (true) и никогда не вычисляет hasPassword

Вычисление с коротким замыканием не только экономит усилия: оно определяет, какой код выполняется. Здесь вторая проверка безопасна только потому, что Lua пропускает её, когда lives равно nil:

lives = nil  -- пока нет значения

canPlay = lives ~= nil and lives > 0
print(canPlay)  -- false

Без вычисления с коротким замыканием выражение lives > 0 остановило бы программу с ошибкой, потому что nil нельзя сравнивать с числом. Вы будете часто это использовать: проверяйте, существует ли значение, прежде чем использовать его.

Попробуйте сами

В этом уроке нет задания по программированию.

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы

Потренируйтесь самостоятельно: Онлайн-компилятор Lua