Как правильно загружать файлы в скрипте с luabind?

Я пытаюсь встроить Луа в игру. Я хочу создать функцию загрузки, которая будет загружать все файлы в папке, а затем создавать объекты на основе тех файлов, которые будут храниться на стороне C ++. Однако, если я использую что-то вроде dofile, это загрязняет все переменными, которые находятся в этом файле. Как изменить этот импорт на локальный?

2

Решение

Ты можешь использовать loadfile чтобы получить функцию на основе содержимого файла, затем setfenv(fn,{}) установить среду, а затем вызвать эту функцию (вероятно, в pcall):

local fn, err = loadfile("myfile")
if fn then
setfenv(fn,{})
local ok, err = pcall(fn)
if not ok then error(err) end
else
error(err)
end

Вы также можете заполнить таблицу, которую вы передаете setfenv со значениями вам нужен скрипт, чтобы иметь доступ или предоставлять доступ к глобальной среде с помощью чего-то вроде:

local env = {}
setmetatable(env,{__index = _G})
setfenv(fn,env)

Это все для Lua 5.1.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]