Песочница Lua для загрузки множества скриптов

Я хочу создать оболочку, которая может загружать сценарии регулярно, но, удаляя данные предыдущего сценария перед загрузкой другого, загруженные сценарии должны иметь доступ ко всем глобальным функциям, кроме некоторых функций, таких как "печать", а также изменять поведение некоторых функций. В настоящее время у меня есть этот код:

local _print = print
local _globalFunc = globalFunc
local env = {}

function newEnviorment()
  env = _G
  env.globalFunc = function() end
  env.print = function (msg)
    _print('Wrapper says: '.. msg)
  end
  env.Somefunc = function() end
end

function loadScript (script)
  local loaded = loadstring(script)
  if loaded then
    setfenv(loaded, env)
    local ex = pcall(loaded)
  end
end

Когда я хочу загрузить новый скрипт, я вызываю эти две функции, что не так с этим кодом, так как он не работает должным образом.

1 ответ

function newEnvironment()
  env = setmetatable({}, {__index = _G})
  env.globalFunc = function() end
  env.print = function (msg)
    _print('Wrapper says: '.. msg)
  end
  env.Somefunc = function() end
end
Другие вопросы по тегам