Skip to content

Freziyt223/Lua-simple-classes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ukrainian variant

Зміст:

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

Object = {} -- Будь-який початковий об'єкт класу 
function Object:new(...) -- двокрапка викликає функцію Object.new(self, ...), де self введе те що знаходиться всередині Object
    object = setmetatable({}, {__index = self}) -- створюється новий об'єкт, у який поміщається усе що було в self(__index являє собою посилання на основний об'єкт, якби надаючи йому усі властивності 
                                                -- основного об'єкта)
    local Arguments = ... -- фіксування аргументів функції
    for k, v in pairs(self) do -- цикл що пройдеться по усім значенням аргументів
         if k ~= "Local" then -- та введе або значення аргументу, або, за його відсутності, значення self(усі окрім Local)
            Вивід[k] = v or Вивід[k]
        else
            Local = setmetatable({}, {__index = v}) --Введе Local у окрему змінну
        end 
    end
    return object, Local -- вивід об'єкта і значень Local
end

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

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

Приклади(examples)

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

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

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

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

Lua C Api:

тут буде туторіал для використання Lua з C Lua - мова програмування що написана повністю на C і не компілює файли, а запускає їх через сам lua.exe, це називається Runtime, також цей runtime можна симулювати в C за допомогою стандартних бібліотек Lua для C.

Для чого це?

Lua - доволі проста скриптингова мова, яка не має типів і має доволі велике фокусування на Object Oriented Programming. Що є корисного в Lua? Lua має table і function, які можуть бути корисні будь-де, наприклад, table може замінити і struct і array і має моживості використання обох одразу, також ви можете створювати metatable, тобто table які будуть надавати властивості іншим, наприклад у вас є багато об'єктів в грі, ви хочете щоб усі об'єкти мали приблизно однакові властивості і однакову структуру, для цього ви можете створити metatable:

Object = {
параметри
}

NewObject = Object

або як в моєму прикладі:

Object = {}

NewObject = Object:new(параметри)

Функції можуть бути будь-якого вигляду, виводити багато об'єктів одразу і виводити об'єкти не одного типу, або ж виводити іншу функцію, яку можна викликати також Lua має можливість прямого доступу до усіх зміних, тобто в луа, усі індекси зберігаються в _G table і можуть бути змінені/введені як:

_G[Назва змінної] = значення
або 
_G[назва нової змінної] = значення

також Lua надає розширенні можливості використання table за допомогою стандартних аргументів:

__add, __sub, __mul, __dev, __pow, __cat, __call, __index й інші

документацію з цих аргуметів можете знайти на офіційному сайті Lua

Завантаження

Для початку, завантажте Lua(для тестування) і бібліотеки Lua для C. Перейдіть на сайт (Lua)[lua.org], зайдіть в Download, під вкладкою Building оберіть download binaries, оберіть потрібну версію і оберіть tools executables для завантаження Lua. Далі оберіть платформу, завантажте .zip теку і розпакуйте її в якесь місце на вашому пристрої. Далі вам потрібно додати Lua до глобальних програм, тобто PATH, для кожної операційної системи цей процес відрізняється, тому рекомендую подивитись туторіал для саме вашої системи: (Як додати програму до PATH на Windows)[https://www.youtube.com/watch?v=gb9e3m98avk], (Як додати програму до PATH на Linux)[https://www.youtube.com/watch?v=AhJ0bFmF36w], (Як використати програму в PATH на MacOS)[https://www.youtube.com/watch?v=2J58Pc2ZOAQ]

Після цього ви можете використовувати Lua, тестувати програми.

Тепер давайте завантажимо бібліотеки Lua, перейдімо знову на сайт Lua, Download, під вкладкою Building оберіть download binaries, оберіть потрібну версію і оберіть Windows libraries, завантажте zip теку. Після цього можете переглянути туторіал на те, як ініціалізувати Lua в вашому проєкті:

або послідувати прикладу:

створіть нову папку, в ній створіть папку Lua, в неї перемістіть усі файли з завантаженої zip теки. Перемістіть lua54.dll з папки Lua в папку вашого проєкту. Після цього можете створити c і lua файли для роботи з ними і для того, щоб використати lua і скомпілювати C, використовуйте ось таку комадку компіляції:

gcc -Wall main.c -I "Lua/Include" -L "Lua" -llua54 -o main

де -Wall аргумент, що вмикає виведення помилок при запуску, виконуваний файл - main.c -I "шлях" це шлях до бібліотек, в даному випадку це лише Lua/Include, -L - шлях до бібліотек і файлів .lib/.a -llua54 файл .lib

Завантаження

Натисність на кнопку Code у правому верхньому кутку, потім натисніть Download ZIP file, розпакуйте, і можете використовувати код в Program/Classes.lua, або сам файл. Ви також можете використовувати LuaRocks:

luarocks install simple_classes_lua

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 You can also use LuaRocks:

luarocks install simple_classes_lua

About

Simple implementation of classes in other programming languages to Lua

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages