Сокращенные вычисления
Часть раздела Fundamentals путешествия по Lua на Coddy — урок 23 из 90.
Операторы and и or используют умную оптимизацию, называемую сокращённым вычислением (short-circuit evaluation). Это означает, что 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 использует сокращенное вычисление для операторов and и or, прекращая вычисление, как только становится известен окончательный результат.
Для оператора and: если первое условие равно false, второе условие никогда не вычисляется:
playerAlive = false
hasWeapon = true
canFight = playerAlive and hasWeapon
-- Проверяет только playerAlive (false), пропускает hasWeaponДля оператора or: если первое условие равно true, второе условие никогда не вычисляется:
hasKey = true
hasPassword = false
canEnter = hasKey or hasPassword
-- Проверяет только hasKey (true), пропускает hasPasswordПопробуйте сами
В этом уроке нет задания по программированию.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Fundamentals
4Операторы 2: Сравнение и логика
Операторы равенстваОператоры сравненияОператор 'and'Оператор 'or'Оператор 'not'Сокращенные вычисленияЗначения Truthy и FalsyИтоги: Простая логика7Основы условной логики
Оператор if-thenОператор if-then-elseОператор elseifИтоги — Сундук с сокровищами10Таблицы, часть 1: Списки
Что такое таблица?Создание таблицыДоступ к элементам по индексуИзменение элементов по индексуОператор длины '#'table.insert()table.remove()Итоги: управление участниками группы13Проект: Простой магазин зелий
Настройка проектаДобавление зелья2Переменные и типы данных
Что такое переменная?ЧислаСтрокиБулевы значенияЗначение 'nil'Функция type()Правила именованияИтоги — Профиль персонажа5Базовый вывод
Вывод литераловВывод переменныхВывод нескольких значенийОбъединение строк и переменныхФункция tostring()ВводПриведение типовПовторение — Отчет о состоянииПовторение — До 1208Основы работы со строками
string.len()string.upper и string.lowerstring.sub()string.rep()string.find()Повторение — Форматирование имени пользователя3Операторы 1: Арифметика и конкатенация
Арифметические операторыОператор остатка от деленияОператор возведения в степеньКонкатенация строкПриоритет операторовПовторение: Простые вычисления6Проект: Вывод характеристик персонажа
Приветственное сообщениеОбъявление характеристик персонажа9Основы функций
Объявление функцииВызов функцииФункции с параметрамиФункции с несколькими параметрамиОператор 'return'Повторение — Калькулятор площади