Условия: if, elseif, else
Учим программу выбирать путь в зависимости от условий.
Условие — это проверка, которая позволяет программе выполнить разный код в зависимости от того, истинна она или ложна.
Без условий программа была бы прямой как рельс. Условия дают ветвление: если здоровье кончилось — игрок проиграл, иначе — продолжаем.
Базовый if
local hp = 0
if hp <= 0 then
print("Игра окончена")
else
print("Игрок жив, hp:", hp)
endВывод:
Игра окончена
Конструкция читается естественно: if ... then ... else ... end. Слово end закрывает блок — про него часто забывают.
Несколько веток: elseif
local score = 75
if score >= 90 then
print("Отлично")
elseif score >= 70 then
print("Хорошо")
elseif score >= 50 then
print("Сойдёт")
else
print("Попробуй ещё")
endВывод:
Хорошо
Lua проверяет ветки сверху вниз и выполняет первую подходящую, остальные пропускает.
Операторы сравнения
| Оператор | Значение |
== | равно |
~= | не равно |
< > | меньше, больше |
<= >= | меньше/больше или равно |
Внимание: «не равно» в Lua пишется ~=, а не != как в большинстве языков.
Логические операторы
Условия можно комбинировать через and, or, not:
local hp = 50
local hasShield = true
if hp > 0 and hasShield then
print("Защищён и жив")
end
if not hasShield then
print("Без щита")
endВывод:
Защищён и жив
Как работает под капотом
Операторы and и or в Lua «ленивы» и возвращают не true/false, а само значение. a and b даёт a, если оно ложно, иначе b. Это используют для значений по умолчанию: local name = input or "Гость" подставит «Гость», если input равен nil.
Частые ошибки
- Писать
!=вместо~=для «не равно» — это синтаксическая ошибка в Lua. - Забыть
endв концеif— частая причина ошибок «unexpected symbol». - Путать
=(присваивание) и==(сравнение) внутри условия.
Итог
- Условие строится из
if...then...elseif...else...end. - «Не равно» в Lua — это
~=; «равно» —==. - Логику комбинируют операторы
and,or,not. orудобен для значений по умолчанию:x or default.