lua中全局变量的保存
lua如何保存c的全局变量以及static变量?
lua使用registry保存c的全局变量以及static,为了防止被lua文件修改,该表只能在c中访问。
lua文件本身的全局变量如何保存,与c的全局变量不同,lua的全局变量保存在upvalue中的 _ENV表中的_G表,例如:

1 local a = { 2 ["2122"] = "2-4266705", 3 ["111"] = "2-9549213", 4 ["2119"] = "2-6855130", 5 ["2120"] = "2-6855130", 6 ["2121"] = "2-4266705", 7 } 8 9 c = { 10 a = 1, 11 b = 2 12 } 13 local b = 1 14 local function prri() 15 b = b+ 1 16 c.c = 1 17 end 18 prri() 19 local i = 1 20 while true do 21 local name, value = debug.getupvalue(prri, i) 22 if not name then 23 break 24 end 25 print("=======", name, value) 26 if name == "_ENV" then 27 for _, v in pairs(value._G.c) do 28 print(_, v ) 29 end 30 end 31 i = i + 1 32 end
上述测试代码中,函数prri引用了全局变量c,此时获取到 prri的upvalue中的_ENV,访问 _ENV._G.c 即可访问到全局变量c,另外也可以直接用 _ENV.c 访问到。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库