lua – 加载文件并返回其环境
发布时间:2020-12-14 21:47:16 所属栏目:大数据 来源:网络整理
导读:我正在尝试执行以下操作:(下面的include()代码) File1.lua A = 5 File2.lua file1 = include(File1.lua)A = 1print(A) -- 1print(file1.A) -- 5 我找到了我正在寻找的东西,但在lua 5.1中: Loadfile without polluting global environment 但是我无法让它在5
我正在尝试执行以下操作:(下面的include()代码)
File1.lua A = 5 File2.lua file1 = include(File1.lua) A = 1 print(A) -- 1 print(file1.A) -- 5 我找到了我正在寻找的东西,但在lua 5.1中: 但是我无法让它在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,所以我试图不修改函数调用.这可能吗? 解决方法
File2.lua
function include(scriptfile) local env = setmetatable({},{__index=_G}) assert(loadfile(scriptfile,'t',env))() return setmetatable(env,nil) end file1 = include'File1.lua' A = 1 print(A) -- 1 print(file1.A) -- 5 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |