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 ответов

18 просмотров

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 на последний файл с кодом, а все файлы.

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

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

#include <stdio.h> #include <stdlib.h> #include <time.h> void mass_first_generate(int mass[5][7]) {     for (int N = 0; N < 5; N++) {         for (int A = 0; A < 7; A++) {   ...
Чувак
6
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
https://www.linkedin.com/posts/ugama-benedicta-kelechi-codergirl-103041300_mobiledevelopment-fluttertraining-handsonlearning-activity-7263445699227254784-IdHB?utm_source=share...
CoderGirl
16
Помогите пожалуйста. Делаю систему плагинов. Проблема сейчас в такая: плагины загружаются в основном потоке. FLibHandle := SafeLoadLibrary(FFileName) Но нужно еще выполнить фу...
Илья 🤣
10
Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
объясните пожалуйста, почему функция не работает должным образом? вроде должно брать активное окно сравнивать его размер с размером экрана, и если есть совпадение = true прове...
JF
12
У меня вопрос попроще, почти нубский: нужно заставить сайт эво 1.4.34 перевести с PHP 7.4 на 8.2. Понятное дело, что дополнения обновить-проверить, а с основной системой как ...
Вячеслав Кузьменко
5
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Гляньте, че бывает: Сегодня по одному проекту одной вебстудии делал проект небольшой, на их хостинге. На Modx revo. В определенный момент , работая в админке, вдруг перестал р...
Artem
7
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
12
Карта сайта