Lua程序设计(五十三)

使用 _ENV

由于 _ENV 的使用给我们带来了许多灵活性的手段。由于 _ ENV 只是一个普通的变量,因此可以对其进行赋值或像访问其他变量一样访问它。

_ENV = nil

这句赋值语句将使得后续代码不能直接访问全局变量。这可以用来控制代码使用哪种变量

local  print, sin = print, math.sin
_ENV = nil

print(13) --> 13
print(sin(13)) -->0.420167
print(math.cos(13)) --error!

因为math.cos需要访问 ENV ,但是 ENV 已经被置空,所以会出现错误。任何对自由名称(“全局变量”)的赋值会引发类似的错误。

我们可以显式地使用_ ENV 来绕过局部声明:

a = 13
local a = 12
print(a) --> 12
print(_ENV.a) -->13

用 _G也可以:

a = 13
local a = 12
print(a) --> 12
print(_G.a) -->13

通常, _ G 和 _ ENV 指向的是同一个表。但是, 尽管如此,它们是很不一样的实体。 _ ENV 是一个局部变量,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值