Highly Likely
Это неточно
Highly Likely
Короче в PiL'е всё есть, стопроц
Wsevolod
Tony
Не использовать глобальные переменные, например
я пытаюсь как могу, вот серьёзно, все переменные в последнем файле объявил локальными (или не все? проверить не вручную пока не знаю как)
но есть глобальные переменные, которые я объявляю в другом файле, и которые обязаны влиять на происходящее в последнем файле, и от них избавиться пока не знаю как
Highly Likely
Ну тогда выстраивать сэндбокс с метатаблицей на индекс _G, да
Highly Likely
(там вроде можно даже без метатаблиц, просто новый ENV передать)
Tony
Tony
Благодарю, буду разбираться
Snusmumriken
Добрый вечер. Извиняюсь, что начинаю с проблемы, но очень уж капец какой-то.
Есть у меня программа для КМ вычислений Quanty, по сути – интерпретатор LUA с большой узкоспецифической библиотекой. Есть код в нескольких файлах, который я вызываю в мастер-файле через dofile(). Первые три файла объявляют глобальные переменные, последний – главный кусок кода, который с этими глобальными переменными делает манипуляции, вычисления и сохраняет в соответствующие файлы.
Выполнение последнего из этих файлов я пытаюсь взять в цикл. Но, судя по данным, что-то не так внутри этого кода, как будто некоторые переменные не обнуляются, а при каждом выполнении дополняются. Уже и прописал везде, где можно, local, но всё равно что-то где-то не так
Вопроса два:
1) в статье про dofile написано: you may want to run the new chunk in a protected environment, to avoid unpleasant side effects when running the code . Каким образом это реализовать?
2) есть ли какая IDE для LUA, чтобы можно было увидеть, какая переменная локальная, какая глобальная, и что где происходит?
Пихай в цикл не только dofile на последний файл с кодом, а все файлы.
Wsevolod
В luacheck есть какой-то severity (error/warning/etc)?
Wsevolod
Вернее, есть, но можно как-то включить обозначение, warning это или error, возле каждой строки с месседжем, а не внизу?
Snusmumriken
Вывод в формате [filename:character:line message] сделано для редакторов кода, чтобы редакторы могли указывать конкретное положение ошибки.
Snusmumriken
Если твой редактор это поддерживает — пожалуйста )
Highly Likely
Wsevolod
Wsevolod
А о северити, например
myfile.lua:420:69: warning: unused local ...
Snusmumriken
Так, а в каком смысле "возле каждой строки с месседжем"? Хммм.
Highly Likely
Highly Likely
Snusmumriken
В смысле сам текст, варнинг это или что-то ещё?
Highly Likely
Wsevolod
А то некруто, вим все в 1 цвет красит
Highly Likely
Можно почитать конфиг луачека
Highly Likely
Highly Likely
Но в виде общих полей, а не построчно
Highly Likely
Это было почти год назад, когда я активно работал над луачеком, поэтому уже подзабылось
Highly Likely
Там можно в сорсе почитать, в целом, там никакого рокетсаенса в этом месте нет
Highly Likely
Кажется, на уровне парсера, что ли
Wsevolod
Жаль проект заброшен
Highly Likely
Если кто-то форкнет и продолжит его работу — всё коммьюнити скажет спасибо :-)
Highly Likely
Благо работы там на года вперед
mva
у меня были мысли форкнуть и начать допиливать. Вот только времени у меня отрицательное количество, увы
mva
ну и, к тому же, я и сам могу в любой момент кони двинуть, т.к. у меня диабет 🤷♂️
Стоит ли давать комьюнити ложную надежду - ...
Highly Likely
mva
Highly Likely
Highly Likely
Для крупных галактических корпораций :-)
mva
ну, так-то, да
Highly Likely
Так-то там довольно легко свои проверки писать можно
Highly Likely
По крайней мере на уровне линтера
R
Та же фигня. Написал тут свой аналог луачека (с другим прицелом, правда), а выложить нельзя. Такова жизнь.
Highly Likely
Highly Likely
Highly Likely
Ибо в луачеке очень много хвостов от MetaLua осталось
Highly Likely
И в целом коду от 3 до 10 лет
R
Highly Likely
R
Да и всё равно это промежуточный проект по сути, мы планируем свой язык с нормальным СА.
Timur
вот тут продолжилась жизнь luacheck https://github.com/luarocks/luacheck
Timur
но как я вижу здесь собираются переехать в lunarmodules организацию
Andrey
Всем привет. Коллеги с шаблонами туго, подскажите где я здесь ошибся пожалуйста.
local function isSelect(queryString)
if type(queryString)~='string' then
return nil
end
local pattern =';*[\s*\t*][Ss][Ee][Ll][Ee][Cc][Tt][^;]*;*$'
if string.match(queryString,pattern)>0 then
return true
else
return false
end
a="SELECT * FROM a;"
b="INSERT INTO (a,b) SELECT a,b from C"
c="select distinct a from b"
d="INSERT INTO (a,b) SELECT a,b from C;select distinct a from b"
print (isSelect(a))
print (isSelect(b))
print (isSelect(c))
print (isSelect(d))
Andrey
5: invalid escape sequence near '';*[\s'
Snusmumriken
Влепи туда прямой пробел и таб вместо \s и \t.
Andrey
аааа спасибо)
Snusmumriken
Ну или просто пробел, таб экранируется
Snusmumriken
И конструкция [ *\t*] будет искать один обязательный символ по списку: пробел, звёздочка, таб.
[ \t]* — неограниченное количество пробелов и табов
Oleg
Andrey
%s спасло
Andrey
забыл про процент
Snusmumriken
Да, экранирование пробела таки через процент.
Tony
как проверить, является ли некий член таблицы _ENV функцией?
Tony
хочу в лог-файл вывести все переменные, не выводя при этом функции
Tony
нашёл, как вывести globals, locals и upvalues
Snusmumriken
for k, v in pairs(_ENV) do
if type(v) ~= 'function' then
print(k, v)
end
end
fgntfg
Так тип можно же посмотреть
Tony
интересно, спасибо
fgntfg
СНУСЕК, давать готовый ответ не Ъ
Snusmumriken
Лень думать, проще выдать
Tony
Lua так отличается от всего, с чем раньше работал
Snusmumriken
Я не спал хрен знает сколько
fgntfg
Иди спи
fgntfg
чо ты
fgntfg
Правильнее читать доки
Snusmumriken
Lua так отличается от всего, с чем раньше работал
Только синтаксически, основные принципы те же что в JS и в целом в Python.
> но проще и быстрее разобраться с примером
Но провоцирует на задавание дурацких вопросов и разработку методом "сделайте за меня", без погружения в процесс )