私は次のことをしようとしています:(下記のinclude()コード)
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 の登録済みバージョンを使用するため、関数呼び出しを変更しないようにしています。これは可能ですか? 何を試しても壊れたり、env が null になったりします。