169 похожих чатов

Добрый вечер. Извиняюсь, что начинаю с проблемы, но очень уж

капец какой-то.

Есть у меня программа для КМ вычислений 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, чтобы можно было увидеть, какая переменная локальная, какая глобальная, и что где происходит?

13 ответов

17 просмотров

1) https://stackoverflow.com/a/16366750/8876743 2) вроде как LSP умеет

Tony-Lutsenko Автор вопроса
Tony Lutsenko
сложно, но спасибо

Идея в том, чтобы дать коду из файла свободно читать из _G, но перехватывать запись в _G, что достигается через setmetatable(sandboxed_G, {__index = _G})

> чтобы можно было увидеть, какая переменная локальная, какая глобальная Можно логгировать через setmetatable(sandboxed_G, { __index = _G, __newindex = function(self, k, v) print("Setting "..k.." to "..inspect(v)) rawset(self, k, v) end })

Lua*

Tony-Lutsenko Автор вопроса
Tallneck Hephaestus
Lua*

Виноват, новичок

Wsevolod
1) https://stackoverflow.com/a/16366750/8876743 2)...

А ты уверен, что это то что ему нужно?

> chunk in a protected environment, to avoid unpleasant side effects when running the code Вот конкретно эта фраза про то, что стоит запускать дуфайл в сэндбоксе, чтобы клиентский код не мог никак повлиять на скрытый для него рантайм

Tony-Lutsenko Автор вопроса
Tallneck Hephaestus
> chunk in a protected environment, to avoid unple...

каким образом это организовать так, чтобы глобальные были ридонли для внутреннего?

Tony Lutsenko
каким образом это организовать так, чтобы глобальн...

Не использовать глобальные переменные, например

Tony-Lutsenko Автор вопроса
Tallneck Hephaestus
Не использовать глобальные переменные, например

я пытаюсь как могу, вот серьёзно, все переменные в последнем файле объявил локальными (или не все? проверить не вручную пока не знаю как) но есть глобальные переменные, которые я объявляю в другом файле, и которые обязаны влиять на происходящее в последнем файле, и от них избавиться пока не знаю как

Пихай в цикл не только dofile на последний файл с кодом, а все файлы.

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
Кибер Бомж
8
Карта сайта