Snusmumriken
Молодец : )
ㅤ
Нужен Тест Тьюринга посложнее.
Artem
Тест тьюринга не поможет, если это просто человек, который шлет спам
ㅤ
Сказать "Ия не бот" мог и бот.
Artem
Ну тогда стоит на входе давать решать логическую задачку и смотреть на реакцию
kazgeek
Запретить новым юзерам entity.
Anonymous
Задачку про два стула
Dårk
привет. подскажите, что здесь происходит, и почему это валидный lua код?
function SetupProject(projName, ...)
project(projName)
kind "ConsoleApp"
language "c++"
files {...}
includedirs {"../framework"}
...
end
Dårk
нашел тулзу premake4. используется в книжке туториале по 3D графике для сборки примеров.
Artem
Highly Likely
Есть подозрение, что project, kind, language, files, includediers – функции
Highly Likely
Луа позволяет опускать скобки при использовании одного аргумента строки/таблицы
Highly Likely
А-ля
Highly Likely
kind(“ConsoleApp”)
language(“C++”)
Highly Likely
Идентичны выше написанному коду
Dårk
ищу пару минут, и пока не нашел, какую же версию lua использует premake4...
Pavel
Highly Likely
Highly Likely
Dårk
Highly Likely
Особенно с таблицами
Dårk
https://github.com/premake/premake-4.x/blob/master/premake4.lua#L32
Highly Likely
import “test”
{
“f1”,
“f2”,
“f3”
}
Highly Likely
Ну типа того, да
Highly Likely
Может они просто в глобал пишут, фиг его знает
Highly Likely
Без сорца сложно
Dårk
это ж додумацца нада была
Dårk
think about it
Dårk
Highly Likely
В целом нормальная практика в такого рода скриптах
Highly Likely
Хотя комментарии были бы полезны там, да :)
Dårk
ну ок, спасибо
Snusmumriken
Хех, у меня на работе кое где была крайне распространена конструкция вида
self:Task"server1""subSystem2"{
action = self:action"action_id",
data = self:getData()
}
Тут, правда, метод Task возвращал сгенерированные функции несколько раз, ему типа можно кормить сколько угодно строк (в определённом порядке), но когда скармливают таблицу — он начинает генерить запросы, заполняя строковые параметры дефолтами.
Snusmumriken
Плохо понимаю что мешало передавать вообще все именованные параметры в табличке, но нет, тому кто это писал надо было выпендриться : )
Dårk
Dårk
хочу так же
Snusmumriken
А у меня слегка пухнет моск от того, насколько умный у луа парсер. Со всеми этими выкрутасами, код ещё может представлять собой одну строку без точек с запятой. Правда, у луа нет отдельно стоящих выражений, видать жертва свободы синтаксиса.
🐅🤦♂️
Snusmumriken
Нет, он вызывается с одним параметром "server1", а потом возвращает функцию которая тут же снова вызывается с аргументом "subSystem2", и эта функция возвращает ещё одну функцию, которая принимает аргументом таблицу, но можно и добавить/сократить часть этапов.
🐅🤦♂️
Очень динамично, жесть.
Snusmumriken
По моему, оно частично на метатаблицах, то есть метод Task возвращает объект с метаметодом __call, который при последующих вызовах возвращает сам себя, дабы успешно наполнять себя разными аргументами по порядку. Так и проще сделать, и ссылка на self сохраняется.
Snusmumriken
(если кто вдруг не знал, таблицы можно вызывать как функции, при определённых условиях)
🐅🤦♂️
Важно такое поведение описывать в документации библиотеки которая его использует подробно и с примерами иначе застрянешь при изучении.
🐅🤦♂️
Ну про себя говорю)
Snusmumriken
local StoreMT = {}
function StoreMT.__call(self, arg)
table.insert(self, arg)
return self
end
function newStore()
return setmetatable({}, StoreMT)
end
local t = newStore()
t"10""20""Hello!"
print(t[2]) --> 20
print(t[3]) --> Hello
Хехехе
🐅🤦♂️
В мемориз
Snusmumriken
Да не, просто надо освоить метатаблицы, тогда всё станет очень просто, и ты будешь на автомате делать и такое тоже, если понадобится.
Saphire
Snusmumriken
Какой такой баш?
Saphire
Ну такой
Snusmumriken
В баше есть подобные инструменты?
Saphire
Я к тому, что кучу аргументов пихаешь в функцию через пробел/etc
Snusmumriken
Ненене, тут объект, который при вызове его как функцию добавляет в себя эту фигню, а потом возвращает сам себя, и его снова можно вызвать как функцию и добавить в него ещё что-нибудь, и так до бесконечности.
Snusmumriken
Вот это вот — то же самое t("10")("20")("Hello!"), только со скобками, которые можно и опустить.
🐅🤦♂️
Такое поведение полезно кроме синтакстчнского сахара?
Snusmumriken
Да не, чистый сахар. Можно умереть от диабета.
🐅🤦♂️
А красивое сцепление.
Snusmumriken
Прочитай статейку, тут ещё несколько примеров метатабличной ерунды
https://habr.com/ru/post/346892/
🐅🤦♂️
Читал, перечитаю)
Pavel
https://habr.com/ru/company/ic-dv/blog/451708/
Pavel
интересно - по всем будут ходить…
fgntfg
Snusmumriken
Привет Анна , semen , @rollaholla. Расскажите немного о себе!
Александр
не знаю, какую линку я вставил, столько написал а бот все удалил.. %)
Вкратце: есть луа скрипты для редиса. У него есть метод call, через который вызываются команды редиса, но, кажется, они не поддерживают апи полностью: я хочу вызвать команду SET с опциями EX и NX одновременно, но я не могу найти сурс код этой "стандартной редис библиотеки", и мне не понять, как же указать эти параметры
Snusmumriken
Ну тут антиспамбот, так что не обессудь. Всякие tabke.key1.key2 он иногда тоже воспринимает как ссылки, эх. Через сутки сможешь писать что хочешь.
Какую либу используешь? Там, помнится, можно абсолютно любые конструкции пихать, типа
db:set(key, value, ex, nx)
Snusmumriken
Ой, сорь
Александр
>_<
Snusmumriken
Да
Snusmumriken
Обрами ссылку обратными апострофами `
Snusmumriken
Или я ща настрою бота чтобы посылал мессаги мне
Snusmumriken
/daysandbox_config
Александр
юзаю azure redis, в нем открываю redis-cli и пишу eval "redis.call(параметры)". Документация по "redis.call" не гуглится дальше примеров с хеллоуворлдом, а redis.call('set', 'key', 'value', 'ex 10', 'nx') не работает
Snusmumriken
Ну если там есть call, то ты можешь пихнуть полную строку запроса, как в доке редиса:
redis.call[[set key "value" EX 10 NX]]
Александр
я в луа полный ноль, а что за квадратные скобки?
Snusmumriken
Saphire
Ну тут антиспамбот, так что не обессудь. Всякие tabke.key1.key2 он иногда тоже воспринимает как ссылки, эх. Через сутки сможешь писать что хочешь.
Какую либу используешь? Там, помнится, можно абсолютно любые конструкции пихать, типа
db:set(key, value, ex, nx)
Т.е. вместо того, что бы париться с всякими gtld, он тупо смотри на всё с точками?
Вспоминается fanfiction.net который люто бешено режет ссылки