lua 设置文件运行的环境
背景
在一个lua文件中书写的代码, 使用的变量, 需要设置其运行环境。
目的:
1、 不破坏全局环境。
2、 限定文件所使用的环境, 作为沙箱功能。
解法
限定运行空间环境的文件:
local m = {} m.dingzhiprint = function () print("nasView print") print(os.getenv("PWD")) end bbb = 1 print("dmenu="..dmenu) return m
加载上个文件的代码 (将dmenu的值,传入上个文件, 并限定只能在全局环境中读取):
function callfunc() local dmenu = "aaaa" local prog = _G.loadfile("newModule.lua") --check lua or chunk --local _env local env = setmetatable({dmenu=dmenu}, {__index=_G}) --local env = getfenv(1) if env then --_env = getfenv (prog) setfenv (prog, env) end prog () end callfunc()
出处:http://www.cnblogs.com/lightsong/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。