Lua/Конструкции языка: различия между версиями

Содержимое удалено Содержимое добавлено
Нет описания правки
Нет описания правки
Строка 29:
</syntaxhighlight>Напомним, что #a - длина массива (в нашем случае, она равна 100)
 
== Условные конструкции ==
== Логические операции ==
Часто нам нужно будет использовать условия в коде - мы их называем условными выражениями. Для их создания используют ключевые слова if(если), then(тогда), else(иначе), elseif. Пример:<syntaxhighlight lang="lua">
В Lua существует 3 логические операции: and (и), or(или), not (нет). Результат этих операций - false или true. Фактически, они сравнивают истинность двух выражений. Первое, что мы рассмотрим - and: возвращает true, только когда оба выражения являются истинными:<syntaxhighlight lang="lua">
a = 15
print(true and true) --> true (и то, и то - истина)
b = 14.7
print(true and false) --> false (истина только одна, а должны быть истины все)
-- Если а больше b, то добавим к b единицу, иначе, отнимем единицу:
</syntaxhighlight>Второе - or. Он возвращает true, когда хотя бы одно из выражений является истинной:<syntaxhighlight lang="lua">
if a > b then
print(true or false) --> true (одна истина уже есть)
b = b + 1
print(false or false) --> false (нет истинного выражения)
else
b = b -1
end
</syntaxhighlight>Можно записать эту конструкцию кратко, но лучше так не делать - ухудшается читаемость вашего кода:<syntaxhighlight lang="lua">
if a > b then b = b +1 else b = b -1 end
</syntaxhighlight>Но что, если мы хотим проверить еще сделать еще условия? Используем elseif:<syntaxhighlight lang="lua">
a = 3
b = 4
c = 5
if c > a then
print("с больше а")
elseif c > b then
print("с больше b")
else
print("с - не самое большое")
end
 
</syntaxhighlight>
</syntaxhighlight>И третье - not. Возвращает отрицание выражения: если исходное выражение было истиной, то благодаря not оно станет ложным:<syntaxhighlight lang="lua">
 
print(not true) --> false
== Циклы ==
</syntaxhighlight>А теперь сделаем некоторые замечания: под true/false могут быть любые выражения, которые могут оказаться boolean, например: 2+2 == 4. Второе важное замечание - это приоритеты выражений: если мы захотим сравнить что-то более сложное, например a and b or c, то у нас могут возникнуть проблемы из-за интерпретации этого выражения. And всегда имеет больший приоритет над or: сначала будет сравниваться b или с, а потом итог прошлого выражения и а. Чтобы сделать выражение иным, мы можем использовать такую запись: (a and b) or c.