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這可能嗎? 無論我嘗試休息或環境爲空。
謝謝!我不認爲像這樣的解決方案將工作,因爲我使用我自己的版本的加載文件,但我對它如何包裝的理解是錯誤的... – TomB
斷言pcall沒有任何意義。 – daurnimator
我可以看到daurnimator的含義。如果你打算使用格式不正確的腳本失敗,爲什麼不定期調用它,而不是通過整個'assert(pcall' business? – greatwolf