Lua 把全局变量放在一个 table _G 中,这个 table 被叫做全局环境。打印所有的全局变量名:对于一个 free namevar 实际上会被转换为 _ENV.var:任何作为 _ENV 的值的 table 被叫做环境。Lua 加载一个 chunk 的时候,此 chunk 的 _ENV 默认值为全局环境。看一个简单的例子:一个比较有趣的例子是:正如前面说的 a 会被转换为 _ENV.a,而 do end 中定义了一个新的 _ENV,因此第一个 print 输出了局部变量 _ENV 的 a 的值。由此可以看到,我们可以很容易的为一个函数创建一个私有的环境:类似的,我们在不同的函数中共享一个特定的公共环境也是很容易做到的。
暂无评论