Lua (порт. lua — толэзь) — векчи, вылӥ лёгетысь, трос-ӧро косонрадъян кыл. Со мукет косонрадъетъёсы пыӵатъянлыгес лэсьтэмын вал. Дась байт-кодзэ валатӥсез ANSI C-эн гожъямын бере, Lua котькудӥз инъетын уже кутыны луэ. Lua'лэн пыӵатъяны капчи C API-ез вань.[1]

Lua
Ӧрыз трос-ӧро:
пыӵатъян,
процедура,
прототип,
объект,
функция ӧръёс
Кылдытӥсез Роберту Иерузалимски,
Валдемар Селиш,
Луиш Энрике ди Фигейреду
Нырысетӥ поттон 1993 арын
Тип сӧзнэтэз динамик, юн, ӵӧж
Пӧрмытон кылэз ANSI C
Операци сӧзнэтэз Котькуд
Лицензиез MIT
Файл ним пум .lua
Вотэсбамыз www.lua.org

Lua ӧнерчиослы гинэ тупатымтэ. Соин ик бадӟым саклык капчи радлыкезлы но дышетонэзлы висъяське. Кылэз поттонлыдо косонрадъетъёсыз лэсьтон бордын юн уже куто (кылсярысь, Lua'ен Adobe Lightroom'лэн графика интерфейсэз гожъямын вал). Озьы ик компьютер шудонъёслэсь пагӟаоссэс но ватсэтъёссэс кылдыто (соос пӧлысь огез — World of Warcraft)[2].

Пӧртэмлыкъёсыз

Тупатыны

Синтаксисэз

Тупатыны

Огшоры «Ӟечбур, Дунне!» косонрадъетэз озьы гожтыны луэ:

print('Ӟечбур, Дунне!')

яке тазьы:

print 'Ӟечбур, Дунне!'

Валэктонъёс кыкто вакчигожен кутско но чурлэн пумозяз кыстӥсько. Трос чур басьтӥсь валэктонъёс но пусрадъёс кыкто квадрат скобкаен висъясько.

Факториал функциез пӧрмытон пример:[3]

-- факториал функциез тупатон
function fact (n)
  if n == 0 then
    return 1
  else
    return n * fact(n - 1)
  end
end

print('Лыддэс гожтэ:')
local a = io.read('*number') -- лыдэз кутоно
print(fact(a))

Быдэстон ӧръян

Тупатыны

Lua'лэн ньыль пӧртэм циклэз вань: while, repeat (со do while-лы укша), лыдо но огшоры for циклъёсыз.

while condition do
  --condition зэм луыку быдэстоно
end

repeat
  --condition зэм ӧвӧл луытозь быдэстоно
until condition

for i = start, end, delta do
  --косонъёс
end

Огшоры for циклэз:

for key, value in pairs(t) do
  print(key, value)
end

Таиз t таблицаез стандарт pairs функциез уже кутыса пырпотэ, со nil берыктытозь.

Озьы ик огзэ циклэз мукетаз понэм луэ:

local grid = {
  { 11, 12, 13 },
  { 21, 22, 23 },
  { 31, 32, 33 }
}

for y, row in ipairs(grid) do
  for x, value in ipairs(row) do
    print(x, y, grid[y][x])
  end
end

Функциосыз

Тупатыны

Lua'лэн функциосыз инъетасен лыдъясько. Со возьматэмын татын:

do
  -- Ализэ print функциез oldprint'э пононо
  local oldprint = print
  function print(s)
    --[[ Выльысь print функциез тупатон. Огшоры print'эз али но уже кутыны луэ
         oldprint вылэ чӧлскыса. Вылез одӥг гинэ аргумент басьтэ.]]
    oldprint(s == "foo" and "bar" or s)
  end
end

print'эз котькудӥз вуоно курон выль функцие ыстӥськоз. Нош Lua'лэн лексической ватонэзлы луыса нырысетӥзэ print уже кутыны воштэмез print пыр гинэ луэ.

Lua озьы ик берпумъянъёсты лэзе:

function addto (x)
  -- x-эз аргументлы ватсась функциез берыктоно
  return function (y)
    --[[ Педпалась x вошъяськись, кудӥзлэн улон дырыз та лушкем функцилэсез сярысь
         вакчигес луыны луэ, вылэ чӧлскыса Lua берпумъян кылдытэ.]]
    return x + y
  end
end

local fourplus = addto(4)
print(fourplus(3)) -- 7 возьматоз

-- Озьы ик яра
print(addto(4)(3)) -- берыктэм функциез курон

x-эз кутӥсь берпумъян addto котькудӥз куремен кылдэ. Соин ик берыктэм котькуд лушкем функция нимаз x-зэ кутэ. Берпумъянъёсты мукет объектъёсты кадь ик Lua'лэн жаг октӥсез октылэ.

Чӧлсконъёс

Тупатыны

Валэктонъёс

Тупатыны
  1. About Lua Lua.org. Эскеремын 2019-11-23 аре
  2. Which language do you use for scripting in your game engine? GameDev.net.
  3. Programming in Lua : 1 Lua.org.