Roman
c, a, b могут быть в любом порядке?
Roman
... строго слева направо достается селектом
Roman
вот и не верю, это стек
Roman
может пруф на сорц?
Snusmumriken
Ну как тебе сказать.
a, b, c = 10, 20, 30
a, b, c = c, b, a -> 30, 20, 10
Переменные спокойно меняются значениями.
function foo(...) local a, b, c = ...; return a, b, c end
print(foo(10, 20, 30, 40, 50, 60)) -> 10, 20, 30
Snusmumriken
А select - функция для работы с кортежами, да.
unpack - превращает таблицу в кортеж.
Roman
Я о том, что когда пишешь на сишечке по луа апи, то там есть стек - очередь значений, и можно их пушить, то есть перебирать поочередно, a, b, c = ... поочередно достает значения из этого стека
Roman
при чем тут котреж?
Roman
как текст разукрашиваешь?
Snusmumriken
Ох, а я про то как ты пользуешься луа-фигнёй :3
Кстати, стак луа-машины и стак процессорный - разные штуки.
Стак машины - считай что обычный массив, в который можно напихать значений для того чтобы передать в луа и из луа.
Ну, точнее массив структур с типами и указателями на куски памяти с данной структурой. Всякие pushnumber/pushtable - делают грязную работу типизации.
Snusmumriken
Да, кажется, мне скоро надоест описывать всякую лабуду типа кортежей каждый раз новым людям, поэтому есть смысл замутить блок с "частыми вопросами".
Korsar
Бота-справочника написать и в чат добавить 😜
Snusmumriken
Отвечать он будет в манере:
"Ну ёб вашу мать, это же и дебилам понятно, что такое кортежи, дуй в википедию блин а то чо как лох".
Теперь мне нравится эта идея ещё больше.
Roman
В википедии непонятно написано
Snusmumriken
Ну, я не агрюсь, а бот будет агриться в шутливой манере, потому что это весело :3
🦥Alex Fails
Snusmumriken
Во, у меня есть бот, который умеет в несмешные цитаты с башорга. Это тоже можно.
Snusmumriken
Чем менее смешные шутки тем лучше. В этом дзен.
B
чрезмерное количество таблиц сильное зло?
Snusmumriken
Чрезмерное количество чего угодно - всегда зло. Чрезмерное же.
Со строками та же фигня.
В целом - чем меньше плодится в часто вызываемых функциях - тем лучше.
Чем реже вызывается функция, тем пофигистичнее.
B
table[][][]
ну значит такие конструкции уже зашквар?
Snusmumriken
Если критично к скорости исполнения - да.
Snusmumriken
А, да, table[][][] - не зашквар, если объявляется один раз а потом используется.
Если объявляется локально, потом заполняется тысячами значений и почти тут же удаляется и так происходит много раз в секунду на критичных к скорости/потреблению памяти местах - зашквар.
B
карочи рубрика,
а я вам тут сладкого хлебушка покушать занес
B
Snusmumriken
Попробую замутить свой удобный оверлоад, с типизацией.
Snusmumriken
Замутил. Правда, для сравнительно редких функций. Зато можно цеплять к объектам.
Snusmumriken
Фактически, это табличка со списком
{numbernumberstring = function() ... end},
а при вызове - проверяются аргументы и вызывается соответствующая типам аргуметов функция.
Если опираться не на типы а на количество - можно гораздо быстрее исполнять, но не так удобно.
Но зато встроенная проверка типов, что не может не радовать.
Snusmumriken
То же самое, но с ориентацией на количество аргументов.
Когда важнее скорость.
Можно и в более ООПшном стиле но лень.
function simpleloaded()
local o, mt = {}, {}
function o.add(count, f)
o[count] = f
end
function mt:__call(...)
local f = self[select('#', ...)]
if f then
return f(...)
else
error('No function with #'..select('#', ...)..' keys')
end
end
return setmetatable(o, mt)
end
foo = simpleloaded()
foo.add(0, function() return 10 end)
foo.add(1, function(a) return a + 10 end)
foo.add(2, function(a, b) return a + b + 10 end)
foo() -> 10
foo(10) -> 20
foo(10, 20) -> 40
foo(10, 20, 30) -> error
Такие пироги.
fgntfg
А разьве нельзя написать что-то типа
function add(...)
local t = {...}
for _,a in pairs(t)
if(typeof(a)=='number') end
if(typeof(a)=='string') end
etc
fgntfg
мне кажется вы переусложняете
Snusmumriken
Можно. Я обычно так и делаю, но товарищ хочет перегрузку с разными функциями под разные типы.
Плюс сильно зависит от того, сколько всякой перегруженной фигни в модуле. Если одна-две функции, то норм. Если штук двадцать (допустим, библиотека работы с векторами, которая воспринимает как векторы так и числа и таблицы в качестве аргументов) - то задолбаешься. Я про крайней мере задолбался пока делал, и писал отдельные помогающие функции.
fgntfg
можно сделать таблицу
c = table[typeof(var)](a,b)
Snusmumriken
Прохожий вариант в моем первом примере. И, прошу заметить, он довольно удобный.
Anonymous
Ребята, может кому-то полезен будет бесплатный митапчик от мейла по аналитике мобильных приложений?) https://corp.mail.ru/ru/press/events/339/
Alex
Marvin
Пора допиливать моего бота-фильтра
Marvin
Чтоб все мэилрушные ссылки блочил
fgntfg
mail, кстати, больше всех из российских компаний за Lua топит.
Snusmumriken
Интересно почему.
Nikolay
совпадение?
vvzvlad
пусть топит, не сломайте.
Snusmumriken
Видимо, Марина не ознакомилась с правилами чата ((
Хочу устроить анонимное голосование на тему "Какой процент местных чуваков интересуется монетизацией маркетингом рекламе в приложениях и прочем заработке трёх копеек на своих поделках-на-коленке, вместо того чтобы программы писать"
Alex
для всех игр от mail.ru аддоны пишутся на lua
и плюс проводя мероприятия для lua'шников они в веб-маркетинге продвижения хотят себе расширить аудиторию потребителей за счёт этих же самых lua'шников
Tverd
кстати, лично мне интересна монетизация... и хочется не 3 копейки. Другое дело, что может там ничего нового не скажут... ну есть такой шанс
Snusmumriken
Нет шансов.
Ну, он меньше полупроцента.
🦥Alex Fails
Опаньки, привет)
🦥Alex Fails
Добро пожаловать в чатик про.луа
Андрей
Привет :)
🦥Alex Fails
Привет :)
В скайпе есть общие знакомые (см пак стикеров)
🦥Alex Fails
Андрей
Меня в скайпе нет .____.
🦥Alex Fails
Андрей
Okay.
Андрей
Вот так бывает: только зайдешь в чатик про Луа, и сразу общие знакомые обнаруживаются .____.
Alexey
в Мэйле помимо игрового дивизиона Lua используется в Tarantool, как встроенный язык
Alexey
и с луа там много хороших штук можно сделать :)
Snusmumriken
Ну, технически, тарантул = бд + планировщик скриптов.
Можно сервак на нём поднимать, и всё такое.
Tverd
о, а кто-нить делал на тарантуле pubsub?
Snusmumriken
Не а, я много что делал на штуке похожей на тарантул (кронос про). Тоже БД со встроенной луа.
Tverd
а такое вот делал? я про паб саб
Snusmumriken
Ты имеешь ввиду, центр событий, который рассылает сообщеньки подписавшимся?
Snusmumriken
Я такое в качестве бота телеграмма делал.
Nikolay
/promote
🦥Alex Fails
Хм. 400. Если у нас сообщение с командой, которое нкжно для реплая сдохло. Надо взять на заметку
🦥Alex Fails
/ghzen@FailsBot
🦥Alex Fails
/ghzen@FailsBot
Snusmumriken
/ghzen@FailsBot
🦥Alex Fails
Блин. их апи порой медленно отвечает(
🦥Alex Fails
Надо sendChatAction добавить, чтоб хоть в чате видно было, что бот шевелится
Tverd
Snusmumriken
1. Список типов событий и подписавшихся к этим событиям
2. Цикл событий а ля входящих сообщений.
Некоторые события могут быть служебными, типа "Хачу палучать саабщения этаво типа!" и "Нихачу больше этих саабщений"
Tverd
ага, я подумаю, ведь надо еще понимать что событие рассылается по очередям каждым подписчикам, если они подключены... а если отвалены, то либо делать событию какой-то тайм аут, либо без оного... тут не понятно
Tverd
пошел во сне подумаю )))
Snusmumriken
Тогда список обновляемых подписчиков.
Связь с подписчиком - пинговка.
Карочи, менеджер соединений, к которому подключаются клиенты, сообщенькой вида: "Хаччу такие мессаги". Раз в пять минут - пинговка, если соединение - UDP. Если TCP - всё гораздо проще. При непрохождении пинговки - отключаем клиента (с UDP-сообщением, мол, отключили, если UDP).
Список типов сообщений содержит в себе список соединений, которым надо отправить (хранятся в слабой таблице {__mode = 'kv'}, чтобы удалившись из списка клиентов, чувак удалился и из списка рассылок).
Когда клиент подключается, сервер добавляет его в список подключений и просматривает спискок подписок, и запихивает его и туда тоже.
Допустим, приходит сообщение определённого типа.
Просматриваем список народа в подписке на текущий тип сообщения и переправляем им всю фигню.
Таким образом, кстати, один чувак может подписаться сразу на несколько типов сообщений.
vvzvlad
Tverd
Снус, это я тоже понимаю, просто хотел готового, велосипедить не шибко мое, но видать придется...