Simple_Classes_Lua

Проста імплементація класів з інших популярних мов програмувань до Lua

$ luarocks install simple_classes_lua

Ukrainian Variant

Це дуже проста репрезентація функції class в інших мовах програмування.
Об'єкт "Object" може бути змінений, як і його назва. Усі змінні, функції, списки прив'язані до нього автоматично додадуться до нового об'єкта.

Object = {} -- Будь-який початковий об'єкт класу
function Object:new(...) -- функція що створить новий об'єкт, двокрапка викликає функцію Object.new(self, ...), де self введе те що знаходиться всередині викликача функції, в цьому прикладі Object
object = setmetatable({}, {__index = self}) -- створюється новий об'єкт, у який поміщається усе що було в self(__index являє собою посилання на основний об'єкт, якби надаючи йому усі властивності основного об'єкта)

for k, v in pairs(...) do -- цикл що пройдеться по усім значенням аргументів
object[k] = Arguments[k] or v -- та введе або значення аргументу, або, за його відсутності, значення self
end
return object, Local -- вивід об'єкта
end

Фунція працює так:

local NewObject = Object:new(...)
після цього усі параметри Object змішаються з введеними параметрами у функцію.
local NewObject, local_arguments = Object:new(...) --Зробить новий об'єкт на основі Object, а також виведе локальні аргументи у local_arguments
--Або ж є такий варіант:
local NewObject, NewObject.Local = Object:new(...) --додасть таблицю Local до нового об'єкту

Приклади
В прикладах використовуються класи заради створення ролі для копії популярної настільної гри Mafia, щоб не створювати окремо кожну роль з її функціями та параметрами, усе зроблено на основі "Роль"

Мафія = Роль:створити({Тип = "Mafia", Убивця = true, Колір = 1, Опис = "Killer of the town", Спілкується_вночі= true, Бік = "Bad"})

Тут навіть якщо ми не введемо якийсь параметр цей параметр залишиться з

Роль = {
Назва = "Heck",
Тип = ...,
Убивця = false,
Колір = "#fffff",
Опис = ...,
Спілкується_вночі = false,
Бік = "Good"
}

Завантаження
На головній сторінці репозиторію в GitHub натисніть Code в правому верньому куті, потім Download ZIP Foulder, після чого розпакуйте архів у якесь місце.

English variant
It's simple representation of class function in other programming languages.
Object "Object" can be changed, as his name. All variables, functions, tables inside Object will automatically be added to new object.

Object = {} -- Any beginning object for a class
function Object:new(...) -- function for making new class, semicolon passes Object.new(self, ...), where self is equal to caller of a function, in this example Object
object = setmetatable({}, {__index = self}) -- creates new object, which contains everything that was in self(__index is a sender to parent object, giving new object all it's parameters)

for k, v in pairs(...) do -- cycle that will check for all arguments
if k ~= "Local" then
object[k] = Arguments[k] or v -- passes all arguments to the new object
else
Local = setmetatable({}, {__index = v["Local"]}) -- passes all local arguments to a Local
end
end
return object, Local -- returns object and Local
end

Function works like this:

local NewObject = Object:new(...)
After that all Object parameters will be availible in NewObject
local NewObject, local_arguments = Object:new(...) --Will give all parameters to a New Object and pass all parameters maked as Local to a local_arguments
--Або ж є такий варіант:
local NewObject, NewObject.Local = Object:new(...) --will add Local to the NewObject
Examples
The examples use classes to create a role for a clone of the popular board game Mafia, so as not to create a separate role skin with its features and options based on "Role"

To download go to GitHub repository and press on Code in right up corner, then press download ZIP file and unpack it, you can use Program/Classes.lua code or whole file

Versions

0.1.0-175 days ago9 downloads

Manifests