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})        -- 将当前环境变量改为一个新的table

print(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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值