本文主要是介绍Lua基础之环境,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
全局环境:Lua将其所有的全局变量保存在一个常规的table中组成全局环境,并通过全局变量_G进行引用。这种组织结构的优点在于可以像操作其他table一样操作这个table。有时我们想操作一个全局变量,而它的名称却存储在另一个变量中,或者需要通过运行时的计算才能得到,可以通过value = _G[varname]来获得动态名字的全局变量。
函数环境:Lua中的函数环境就是函数在执行时所见的全局变量的集合,以一个表来承载,默认每个函数的函数环境为全局环境,值得注意的是,每个Lua文件实质上就是一个函数。每个函数都可以有自己的环境,可以通过setfenv(parm1, parm2)来显示的指定一个函数的环境,第一个参数若是1则表示当前函数,2则表示调用当前函数的函数(依次类推),第二个参数是一个新的环境table。如果不指定,函数的环境缺省为定义该函数的函数环境。
a = 1 -- 这里创建了一个全局变量print(a) -- 输出1
setfenv(1, {g = _G}) -- 将当前环境变量改为一个新的tableprint(a) -– error:attempt to call global 'print' (a nil value)
g.print(a) -- 输出nil
g.print(g.a) -- 输出1
参考链接:
https://www.jb51.net/article/55816.htm
https://www.jb51.net/article/55726.htm
https://www.jb51.net/article/86841.htm
这篇关于Lua基础之环境的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!