Циклы FOR, WHILE, REPEAT в QLua (lua)

Автор записи: Дмитрий (Admin)

Qlua-основы
В скриптовом языке QLua есть 3 вида циклов (for, while и repeat):

1. FOR - DO - END имеет 2 типа:

-- 1-й тип:
 
   -- Цикл сделает 10 итераций, увеличивая каждый раз переменную i на 1, т.е. i будет меняться от 0 до 9,
   -- переменная i является локальной для цикла, т.е. видна только внутри него
   for i = 0, 9, 1 do
      A = A*2;
   end;
   -- Данный цикл можно было записать и без 3-го аргумента, потому что по умолчанию он равен 1
   for i = 0, 9 do
      A = A*2;
   end;
   -- Но вместо 1 можно использовать любое другое число, или выражение, результат которого является числом
   -- Например так, цикл сделает только 5 итераций и остановится, потому что в 6-й итерации i будет равна 10 (0,2,4,6,8,10), а 10 > 9
   for i = 0, 9, 2 do
      A = A*2;
   end;
   -- Здесь используется выражение, т.е. каждая итерация увеличивает переменную i на 2
   for i = 0, 9, 1+1 do
      A = A*2;
   end;
   -- Можно сделать цикл на убывание
   for i = 9, 0, -1 do
      A = A*2;
   end;
 
-- 2-й тип:
 
-- Такой вариант при каждой итерации записывает в i индекс, а в value значение элемента из массива Array,
-- перебирая, таким образом, все элементы в массиве типа {[1] = 10, [2] = "Текст", [3] = 50}
for i,value in ipairs(Array) do
   -- здесь какой-то блок кода
end;
 
-- Такой вариант при каждой итерации записывает в key ключ, а в value значение элемента из массива Array,
-- перебирая, таким образом, все элементы в массиве типа {red = "Красный", green = "Зеленый", blue = "синий"}
for key,value in pairs(Array) do
   -- здесь какой-то блок кода
end;

2.WHILE - DO - END

while A < 10 do
   -- здесь какой-то блок кода
end;
-- Читается так: ПОКА выполняется условие A меньше 10 ВЫПОЛНЯТЬ(делать) блок кода КОНЕЦ

3.REPEAT - UNTIL

repeat
   -- здесь какой-то блок код
until A < 10
-- Читается так: ПОВТОРЯТЬ блок кода ДО ТОГО, пока не выполняется условие A меньше 10

Для того, чтобы досрочно выйти из любого, вышеописанного, цикла служит оператор break.
Пример использования:

for i = 0, 9, 1 do
   if i >= 2 then break; end; -- цикл завершится на 3-й итерации (0,1,2)
end;

Если у Вас появились какие-то вопросы, задайте их в комментариях под статьей !!!