Lua程序设计(五十)

本文探讨了Lua语言中的全局变量与环境概念。在Lua中,全局变量被存储在一个称为全局环境的普通表中,该表可通过全局变量_ G访问。文章指出,虽然全局变量可能导致代码复杂性增加,但通过表操作可以简化管理和元编程。文中举例说明了如何动态访问和设置全局变量,并讨论了使用_G[index]进行动态字段访问的限制。
摘要由CSDN通过智能技术生成

环境

全局变量在大多数编程语言中是不可或缺的,但同时又很容易出现问题。一方面,使用全局变量会明显地是无关的代码部分纠缠在一起,容易导致代码复杂。另一方面,谨慎使用全局变量又能更好地表达程序中真正的全局概念,此外,像Lua语言这样的动态语言无法区分常量和变量的。虽然全局变量在整个程序中均可见得变量,但由于Lua语言时宿主应用调用代码短的,因此“程序”的概念不明确。

Lua语言通过不使用全局变量的方法来解决这个难题,但又不遗余力地在Lua语言中对全局变量进行模拟。在第一种近似的模拟中,我们可以认为Lua语言把所有的全局变量保存在一个成为全局环境的普通表中。

使用一个表来保存全局变量的优点是简化了Lua语言的内部实现。另一个优点是,可以像操作其他表一样操作这个表。Lua语言将全局环境自身保存在全局变量_ G中。

for n in pairs(_G) do print(n) end

输出全局变量中所有全局变量的名称。

通常,赋值操作对于访问和设置全局变量已经足够了,然而,有时我们想要某种形式的元编程。例如,我们需要操作一个全局变量,而这个全局变量的名称却存储在另一个变量中或者经由运行时计算得到。为了获取这个变量的值,我们可以使用以下代码

value = load("return" .. varname)()

如果varnamex,那

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值