4
Я пытаюсь сделать следующее: (код включать() ниже)Загрузка файла и возвращает его окружение
File1.lua
A = 5
File2.lua
file1 = include(File1.lua)
A = 1
print(A) -- 1
print(file1.A) -- 5
я нашел именно то, что я ищу, но в lua 5.1 здесь: Loadfile without polluting global environment
Но я просто не могу заставить его работать в 5.2,
function include(scriptfile)
local env = setmetatable({}, {__index=_G})
assert(pcall(setfenv(assert(loadfile(scriptfile)), env)))
setmetatable(env, nil)
return env
end
Используя это из C++, с зарегистрированной версии LoadFile, поэтому я стараюсь не изменять функции call.Is это возможно? Независимо от того, что я пытаюсь перерывы или env, имеет значение null.
Спасибо! Я не думал, что такое решение будет работать, потому что я использовал свою собственную версию загрузочного файла, но мое понимание того, как оно было обернуто, было неправильным ... – TomB
Утверждение pcall не имеет никакого смысла. – daurnimator
Я вижу, что означает сунниматор. Если вы намереваетесь неудачно сформировать скрипты, почему бы просто не называть это регулярно, а не проходить через весь 'assert (pcall' business? – greatwolf