Snusmumriken
Ох, легко.
Вот тебе пример модуля с классами Foo и Bar.
Никаких сторонних библиотек, ничего глобального, вытряхиваем фабрику.
local Foo = {} -- Класс
Foo.__index = Foo
function Foo:new(x, y)
local o = {}
o.x, o.y = x, y
return setmetatable(o, self)
end
function Foo:set(x, y)
self.x, self.y = x, y
end
-- Наследование
local Bar = setmetatable({}, {__index = Foo})
function Bar:new(x, y, w, h)
local o = Foo:new(x, y) -- Инициализируем родителя
o.w, o.h = w, h
return setmetatable(o, self)
end
-- Переопределяем метод родителя
function Bar:set(x, y, w, h)
self.x, self.y, self.w, self.h = x, y, w, h
end
-- Тесткейс
if ... then
obj = Foo(10, 20)
obj:set(30, 40)
print(obj.x, obj.y) --> 30, 40
end
-- выгружаем табличку с классами
return {foo = Foo, bar = Bar}
Snusmumriken
Не используй в библиотеках другие библиотеки, без которых легко обойтись (по типу ООП, оно настолько простое и времянезатратное, что заставлять пользователя подключать ещё одну либу - насилие над ним).
MrSmith
Действительно, чет всгорел прост. Но мне кажется, такая простая оптимизация должна быть, пойду на досуге гляну. Кстати, кто какие отладчики, профайлеры юзает?
Tverd
отладчик принт, профайлер - debug
MrSmith
ребят, вот такая идея появилась, почему бы не рекверить пакеты прямо с github?
MrSmith
local name = require "module"
ㅤ
Переопределить require, чтобы ссылки подтягивал?
MrSmith
Только вместо module путь у git
MrSmith
ㅤ
Не все модули одинаково подключаются.
MrSmith
ㅤ
Некоторые нужно вытряхивать из вложенных директорий, например.
MrSmith
luarockets?
ㅤ
*luarocks?
А что с ним?
MrSmith
Его может тогда прикрутить
MrSmith
Я думал ты бот и тебя сломать пытался
MrSmith
Сори ночь не спал😂
MrSmith
Нейронка?
ㅤ
А внутре у ней неонка.
ㅤ
Ты уже спалился, со мной но ботячьем заговорил.
ㅤ
Command rate overlimit.
MrSmith
Чет тяжко крестики-нолики на луне писать
MrSmith
Колбасы мама не горюй
MrSmith
Пишу в энтерпрайз стиле кресты ноли
MrSmith
Как положенно с командлайном, конечным автоматом и т.д.
MrSmith
Почти закончил
MrSmith
Сериализацию и то проще написать чем на стандартной либе этого языка крестики нолики
MrSmith
Архитектура тип расширяемая, ну да это наверное смешно для скриптого языка, но почему бы и нет
MrSmith
Да я не помню вроде в json хотели или в бинарник, ща гляну
MrSmith
Реализуйте на языке Lua функцию сериализации таблицы в строку, содержащую код на Lua (сериализовать nil, boolean, number, string).
MrSmith
За че купил за то и продаю, json наверное
void *
В lua table notation)
MrSmith
В lua table notation)
Я такой нотации не знаю, темболее, в книжке по луа есть сериализатор, но я таки по взрослому через рекурсивный итератор сделаю
void *
MrSmith
MrSmith
{nil,nil,nil}
void *
Почему?
MrSmith
Я пример привел
MrSmith
Ну можно с оговорками сделать
MrSmith
Хотя че делать то, рекурсивный итератор, да скобочки
MrSmith
Не я сам, я же как никак на удаленку хочу
MrSmith
Может мой код и не на сверх разуме, но зато он масштабируем, не зря же я мамкин программист
MrSmith
Это же крестики нолики на луа, конечна она тут нужна, в крайности, поиграю с нейросеткой на 100 на 100 в го, дописать то чуток и считай уже не крестики нолики кек
MrSmith
Вот, думаю в атом встроить луну, а то как бомж в js роюсь а он какой-то отвратительный, страшный как ядерная война и кривой как турецкая сабля
MrSmith
Не luajit у меня, ну да, я не торопливый кодер, но и пеко чешу не часто за счет этой особенности
MrSmith
Тише едешь, тише будешь
MrSmith
Возможно
MrSmith
Не, я упорный как слон, у меня на вершине стека клон amd64
MrSmith
Главное быть упоротым как слон, остальное накодится
MrSmith
Тоесть, ты предлогаешь бростить мне это дело и пойти спать?
MrSmith
Почти дописал жи
MrSmith
Я вот думаю как распарсить строку вида, -f 3x3 -g tr tf и т.д. Что бы каждый аргумент по отдельности разбить, есть идея каждой команде дать по регексу и пройти строку всеми командами, но в таком случае, не будет выданно, что то типа - unknow commande поэтому, как вариант просто разбить от терэ до тирэ слово от тире до пробела в индекс комманды а остальное в аргументы строкой пихать
MrSmith
Так и сделаем
ㅤ
lpeg'ом. :}
Mons
https://github.com/igormunkin/lua-re
Anonymous
Как продавать правильно и чаще слышать от людей,-Да? Учимся копаться в сознании людей. Присоединяйся.
https://t.me/Vmozg1
MrSmith
Пфф, че там продавать то, долбишь по мозгам, вешаешь херню, обищаешь повышение потенции - опыт продаж 1.5 месяц
MrSmith
Ребят, пытаюсь собрать luarock с git
MrSmith
по пути ls $(brew --prefix)/include находится папка с инклюдами, как мне путь выцепить?
MrSmith
Надоело просто переписывать все либы
Anonymous
Криптовалюта тесно входит в нашу жизнь. Нужно не упустить волну. И шагать в ногу со временем. А пока шагаешь можно заработать
https://t.me/CryptoMak3r
ㅤ
Это в духе "будет непонятно, что это спам, если не сразу его прислать".
MrSmith
str = "qwe qwe qwexc --xzcxzw --wqexz 123 sds"
for w in string.gmatch(str, "%-%-%a+") do
print(w)
end
MrSmith
Получил команды, осталось выделить аргументы
MrSmith
Конечно это не тонна циклов на си, но есть у меня подозрения что регексы не самое быстрое изобретения шайтана
MrSmith
Так я смог получить следующее слово
MrSmith
Но мне надо все до секвиэнс терминатора
MrSmith
str = "--qwe qwe asd sd qwexc --xzcxzw gdg ffr4 --wqexz asd sdd 123 sds"
for w in string.gmatch(str, "%-%-%a+[%s+%a+]+") do
print(w)
end
MrSmith
Но режит числа
MrSmith
local function parseStringToCommands(str)
for cwa in string.gmatch(str, "%-%-%a+[%s+%a+]+") do
local argument = {}
local command
for w in string.gmatch(cwa, "%a+") do
local readArgumet = false
if commandList[w] == nil and not readArgumet then
break
elseif readArgumet then
table.insert(argument,w)
else
command = w
readArgumet = true
end
end
if next(argument) then
commandList[w].action()
argument={}
end
end
end
MrSmith
Сила непойми какого кода, что то среднее между конечным автоматом и мозготрахом
MrSmith
Есть кто?
MrSmith
Забыл как проверить если nil то присвоить значение иначе не трогать
MrSmith
была однострочка
Snusmumriken
a = b or c
Ну да, если b - false то этот вариант не присвоит ))
MrSmith
Даниил
a = (a and a) or "value"
Даниил
Если а - nil или false, в a уйдёт "value"
если a - любое другое, в а останется а
Оно нужно было?
mva
а разве a or value перестало работать?
Даниил