English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Цикл for в Lua

Циклы Lua

Цикл for в языках программирования Lua может повторять выполнение指定的 инструкций, количество повторений можно контролировать в предложении for.

В языках программирования Lua есть два типа циклов for:

  • Численный цикл for

  • Генерический цикл for

Численный цикл for

Грамматика цикла for с числовыми значениями в языках программирования Lua:

for var=exp1,exp2,exp3 do  
    <Исполнитель>  
end

var изменяется от exp1 до exp2, каждый раз изменяя var на шаг exp3 и выполняется один раз "Исполнитель"exp3 является опциональным, если его не указать, по умолчанию равно 1.

Онлайн пример

for i=1,f(x) do
    print(i)
end
 
for i=10,1,-1 do
    print(i)
end

Три выражения в for вычисляются один раз перед началом цикла и затем не вычисляются снова. Например, f(x) выполняется только один раз перед началом цикла, и результат используется в цикле.

Проверка:

#!/usr/local/bin/lua  
function f(x)  
    print("function")  
    return x*2   
end  
for i=1,f(5) do print(i)  
end

Результат примера выше:

function
1
2
3
4
5
6
7
8
9
10

可以看出 функция f(x) выполняется только один раз перед началом цикла.

Генерический цикл for

Генерический цикл for использует функцию итератора для遍ения всех значений, что аналогично foreach в Java.

Синтаксис генерического цикла for в языке программирования Lua:

--печать всех значений массива a  
a = {"one", "two", "three"}
for i, v in ipairs(a) do
    print(i, v)
end

i - это индекс массива, v - это значение элемента массива по индексу. ipairs - это функция итератора, предоставляемая Lua, которая используется для итерации по массивам.

Онлайн пример

Цикл по массиву days:

#!/usr/local/bin/lua  
days = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"}  
for i,v in ipairs(days) do  print(v) end

Результат примера выше:

Воскресенье
Понедельник
Вторник
Среда
Четверг
Пятница
Суббота

Циклы Lua