4
: 는 환경 파일을로드하고 반환 나는 다음을 수행하려고 해요
file1 = include(File1.lua)
A = 1
print(A) -- 1
print(file1.A) -- 5
File2.lua
(아래 포함() 코드)File1.lua
A = 5
을 내가 찾고있는 것을 정확히 찾았으나 루아 5.1에서는 여기에있다 : Loadfile without polluting global environment
그러나 내가 그냥 5.2에서 동작하지 않습니다, LoadFile과 같은 지시어의 등록 버전, C++에서이 사용
function include(scriptfile)
local env = setmetatable({}, {__index=_G})
assert(pcall(setfenv(assert(loadfile(scriptfile)), env)))
setmetatable(env, nil)
return env
end
, 그래서 내가이 가능한 기능 call.Is을 수정하지 않으려 고 노력 해요? 무엇이든지 휴식을 취하거나 env가 null입니다.
감사합니다! 나는 내 자신의 버전의 loadfile을 사용했기 때문에 이와 같은 해결책이 없다고 생각했지만 어떻게 감겨 졌는지에 대한 나의 이해는 잘못되었다. – TomB
pcall을 주장하는 것은 의미가 없다. – daurnimator
나는 daurnimator의 의미를 알 수 있습니다. 부적절한 스크립트가 실패 할 생각이라면, 왜'assert (pcall') 비즈니스를 통하지 않고 정기적으로 호출하지 않을까요? – greatwolf