Короткий комментарий начинается с ``--`` и продолжается до конца строки.
Многострочный комментарий начинается с ``--[[`` и заканчивается ``]]``.
Несколько операторов на одной строке нужно разделять ;
Оператор присваивания:
```lua
a=b
x,y=y,x -- обмен
```
Оператор goto:
```lua
goto label
::label::
```
Ветвление:
```lua
if a<b then
print("<")
elseif a>b then
print(">")
else
print("=")
end
```
Аналога switch нет
Циклы
```lua
local n=10
while n>0 do print(n); n=n-1 end
repeat print(n); n=n+1 until n>0
for n = 0, 9 do print(n) end
for n = 0, 100, 10 do print(n) end -- с шагом 10
-- цикл с использованием функции-итератора
local t={a=1,b=2,c=3}
for k,v in pairs(t) do print(k,":",v) end
```
Для досрочного выхода цикла используется ``break``
```lua
fun,state,init,close=выр
v1,...,vn=fun(state,init)
while v1 do
тело цикла
v1,...,vn=fun(state,v1)
end
if close then
close(v1)
end
```
Определение функции:
```lua
local function add(a,b)
return a+b
end
-- анонимные функции
local add=function (a,b) return a+b end
```
Функция может возвращать несколько значений, тогда при присваивании для результата можно указать
несколько переменных. Лишние значения игнорируются
```lua
function f() return 1,2 end
a,b=f()
a=f()
```
Пример определения функции-итератора:
```
local function range_iter(stop,i)
i=i+1
if i==stop then
return nil
else
return i
end
end
function range(start,stop)
if stop then
return range_iter,stop,start-1
else
return range_iter,start,-1
end
end
-- пример использования
for i in range(10) do -- 0,1,...,9
print(i)
end
for i in range(2,6) do -- 2,3,4,5
print(i)
end
```