Ещё варианты: elseif
С if и else программа выбирает из двух вариантов. Часто их больше. Для этого добавляют ветки elseif, у каждой из которых есть своё условие и свой then:
local weather = "облачно"
if weather == "солнечно" then
print("Полить поле дважды")
elseif weather == "облачно" then
print("Полить поле один раз")
else
print("Сегодня без полива")
endПрограмма выведет:
Полить поле один разПрограмма проверяет условия сверху вниз и выполняет блок первого истинного. Остальные ветки она пропускает, даже если одно из следующих условий тоже истинно. Блок else выполняется, только если ни одно условие не истинно. Веток elseif можно добавить сколько нужно, и всегда между if и else. Блок else необязателен: без него, если ни одно условие не истинно, ничего не выполняется. И сколько бы ни было веток, их все закрывает один end.
Побеждает первое истинное условие, поэтому порядок важен:
local eggs = 40
if eggs >= 12 then
print("Одна коробка яиц на рынок")
elseif eggs >= 36 then
print("Три коробки яиц на рынок")
endПрограмма выведет:
Одна коробка яиц на рынокСорока яиц хватает на три коробки, но первое условие уже истинно, поэтому до второго программа не доходит. Ставьте условие строже первым: сначала eggs >= 36, потом eggs >= 12.
elseif — это одно слово. Если написать его как два, else if означает уже другое: ветку else с новой, отдельной инструкцией if внутри, а ей нужен собственный end:
local weather = "дождливо"
if weather == "солнечно" then
print("Полить поле дважды")
else if weather == "облачно" then
print("Полить поле один раз")
else
print("Сегодня без полива")
endmain.lua:8: 'end' expected (to close 'if' at line 2) near <eof>end на строке 8 закрывает внутренний if со строки 4, а внешний if со строки 2 остаётся без него. Пишите elseif одним словом, и хватит одного end.
Задание
- 1
Запустите программу: она завершается с ошибкой. Исправьте её, написав
elseifодним словом. Тогда программа выведетТеплица: 15 °CиЗакрыть окна. - 2
Добавьте ещё одну ветку
elseifс условиемtemperature > 20, которая выводитОткрыть одно окно, и заменитеtemperatureна24. Программа должна вывести:Теплица: 24 °C Открыть одно окноЕсли она выводит
Закрыть окна, значит, условиеtemperature > 10стоит первым и перехватывает и 24 °C: поднимите новую ветку выше него.