关于_ENV,欢迎讨论
lua吧
全部回复
仅看楼主
level 8
ks_isaf 楼主
pcall(load(“_ENV=nil”))
print(_ENV)
上面代码第二行会打印什么呢?第一感觉应该是nil吧,但实际上是个table。
这是因为使用load加载代码时返回的函数会有一个名为_ENV的upvalue,该_ENV与load外部的_ENV(也是一个upvalue)是两个不同东西,只是它们引用同一个表而已。因此在load内改变_ENV的值不会影响外面的_ENV。
那有办法在load里面改变外面的_ENV吗?我觉得是没有办法的。
对上面的解释有不同看法的吗?欢迎讨论~~
2014年04月01日 07点04分 1
1