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
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)
Я такой нотации не знаю, темболее, в книжке по луа есть сериализатор, но я таки по взрослому через рекурсивный итератор сделаю
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 то этот вариант не присвоит ))
Даниил
a = (a and a) or "value"
Даниил
Если а - nil или false, в a уйдёт "value" если a - любое другое, в а останется а Оно нужно было?
mva
а разве a or value перестало работать?