Это подробное руководство по основам языка Lua, включающее примеры программ, которые демонстрируют различные концепции программирования на Lua.
Каждая программа на Lua начинается с простого кода:
print("Hello, World!")
Основные типы данных в Lua:
number
— числовые значенияstring
— строкиboolean
— логические значенияtable
— таблицы (ассоциативные массивы)function
— функцииnil
— значение отсутствияПример использования арифметических операций в Lua:
a = 10
b = 20
sum = a + b
diff = b - a
prod = a * b
div = b / a
mod = b % a
print("Sum: " .. sum)
print("Difference: " .. diff)
print("Product: " .. prod)
print("Division: " .. div)
print("Modulus: " .. mod)
Ввод и вывод данных в Lua:
print("Enter an integer:")
num = io.read("*n")
print("You entered: " .. num)
Пример использования оператора if-else
:
print("Enter an integer:")
num = io.read("*n")
if num > 0 then
print("The number is positive.")
elseif num < 0 then
print("The number is negative.")
else
print("The number is zero.")
end
Пример цикла while
:
i = 0
while i < 5 do
print("i = " .. i)
i = i + 1
end
Пример работы с массивами в Lua (таблицы с числовыми индексами):
arr = {1, 2, 3, 4, 5}
for i, v in ipairs(arr) do
print("arr[" .. i .. "] = " .. v)
end
Пример создания и использования функции:
function greet()
print("Hello from the function!")
end
greet()
В Lua нет встроенной поддержки классов, но можно создать объекты с помощью таблиц:
Rectangle = {}
Rectangle.__index = Rectangle
function Rectangle.new(width, height)
local self = setmetatable({}, Rectangle)
self.width = width
self.height = height
return self
end
function Rectangle:area()
return self.width * self.height
end
function Rectangle:display()
print("Width: " .. self.width .. ", Height: " .. self.height .. ", Area: " .. self:area())
end
rect = Rectangle.new(5, 3)
rect:display()
Пример использования наследования в Lua:
Animal = {}
Animal.__index = Animal
function Animal.new()
local self = setmetatable({}, Animal)
return self
end
function Animal:speak()
print("Animal makes a sound.")
end
Dog = setmetatable({}, {__index = Animal})
Dog.__index = Dog
function Dog.new()
local self = setmetatable(Animal.new(), Dog)
return self
end
function Dog:speak()
print("Dog barks.")
end
animal = Dog.new()
animal:speak()
В Lua указатели не используются напрямую, работа происходит через таблицы:
num = 10
ptr = num
print("Value of num: " .. num)
print("Value via reference: " .. ptr)
num = 20
print("New value of num: " .. num)
В Lua управление памятью происходит автоматически с помощью сборщика мусора:
-- Lua управляет памятью автоматически
arr = {1, 2, 3, 4, 5}
print(table.concat(arr, ", "))
Пример работы с файлами в Lua:
-- Запись в файл
file = io.open("example.txt", "w")
file:write("Hello, file!\n")
file:close()
-- Чтение из файла
file = io.open("example.txt", "r")
content = file:read("*a")
print(content)
file:close()