- Регистрация
- 18 Авг 2024
- Сообщения
- 151
- Решения
- 4
- Реакции
- 30
- Баллы
- 28
Все мы знаем , что в языке программирования LUA(Луна) нет классов , как в привычных нами С++, Java, JS, Python.
Вместо классов в LUA есть таблицы .
Таблицы чем-то напоминают структуры в C/C++/C#/Go/Rust и других языках .
Структура с C:
Давайте реализуем таблицу на lua
Тут:
- Используем setmetatable(obj, self) для установки метатаблицы, позволяющей объекту наследовать методы класса.
- self.__index = self заставляет Lua искать отсутствующие поля в Person.
- Метод introduce() позволяет объекту представляться.
Вместо классов в LUA есть таблицы .
Таблицы чем-то напоминают структуры в C/C++/C#/Go/Rust и других языках .
Структура с C:
C:
struct Person{
char name[50];
int age;
};
JavaScript:
Person = {};
function Person:new(name, age)
local obj = {name = name, age = age}; -- Создаём таблицу с параметрами
setmetatable(obj, self); -- Устанавливаем ей метатаблицу для ООП поведения
self.__index = self; -- Направляем поиск полей
return obj;
end;
function Person:introduce()
print("Меня зовут " .. self.name .. ", мне " .. self.age .. " лет.");
end;
local person1 = Person:new("Дима", 19);
person1:introduce();
- Используем setmetatable(obj, self) для установки метатаблицы, позволяющей объекту наследовать методы класса.
- self.__index = self заставляет Lua искать отсутствующие поля в Person.
- Метод introduce() позволяет объекту представляться.