lua小技巧(二)——lua全局变量的检测
相信用lua的人都遇到过由于拼写错误把局部变量变成全局变量的情况,如何避免这个问题呢?
直接上代码!
local mt = {__index = function(_, key)local info = debug.getinfo(2, "S")if info and info.what ~= "main" and info.what ~= "C" thenprint("访问不存在的全局变量:" .. key)endreturn rawget(_G, key)end,__newindex = function(_, key, value)local info = debug.getinfo(2, "S")if info and info.what ~= "main" and info.what ~= "C" thenprint("赋值不存在的全局变量:" .. key)endreturn rawset(_G, key, value)end}setmetatable(_G, mt)
先给全局表_G设置metatable,当访问到不存在的全局变量,或者对不存在的全局变量进行赋值时,调用debug.getinfo(2, “S”)获取调用的堆栈,如果不在主函数访问或者赋值新的全局变量,则抛出日志,提示开发者修改。
这就保证了全局变量只能在主函数声明,其它模块无法直接访问或者赋值未声明的全局模块,也就避免了大部分局部模块拼写错误的问题。
lua小技巧(二)——lua全局变量的检测相关推荐
- MATLAB小技巧(10)圆形检测实例
MATLAB小技巧(10)圆形检测实例 前言 一. MATLAB仿真 二. 仿真结果 三. 小结 前言 MATLAB进行图像处理相关的学习是非常友好的,可以从零开始,对基础的图像处理都已经有了封装好的 ...
- 小六六平时的开发小技巧二(Nacos在服务配置中心的妙用)
前言 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/bin392328206/six-finger 絮叨 小六六打算开一个系列把自己平时的一些开发经验分享出来和 ...
- Linux之头文件引用小技巧(二十九)
Linux之头文件引用小技巧 0.需求: 将本地头文件引用,#include "test.h"更换为#include <test.h>系统引用方式.1.目录结构如下├─ ...
- lua小技巧——lua全局变量的检测
相信用lua的人都遇到过由于拼写错误把局部变量变成全局变量的情况,如何避免这个问题呢? 直接上代码! local mt = {__index = function(_, key)local info ...
- Halcon小技巧:二维平面根据两个点确定方向向量+三维空间点确定姿态
一.二维平面确定法向向量 生成两个点,这个算子在Halcon三维中常用. 讲点连接成线 dev_set_line_width(2)*画点dev_set_color('red')gen_cross_co ...
- 小技巧 ----- 二维数组中通过(x, y)的偏移量来遍历(x, y)周围的元素
应用场景 给定一个二维数组和一个点(x, y) 要求遍历点(x, y)十字形范围的点,包括(x, y) 结论 首先把这个二维数组竖下方向看作x轴,横右方向看作y轴 找到点(x, y)关于其上下左右点的 ...
- MATLAB | 那些你不得不知道的MATLAB小技巧(二)
1: 实时脚本控件 实时脚本应该大部分人都会用了,但是实时脚本控件应该用的人还不多,怎么说呢,应该算一个更方便调整参数的模块叭.点击图示按钮即可插入各种类型的控件: 插入之后双击控件即可设置其属性: ...
- H7-TOOL迎来新版固件V2.09,WiFi压缩图传,FDCAN/Modbus助手波形打印上线,完善串口助手/RTT/Lua小程序,脱机烧增加新型号
目录 H7-TOOL所有资源汇总(含操作手册): PC机软件:升级PC软件到V2.0.9 更新说明: 1.升级新版注意事项 2.脱机烧录 (1)升级STM32G0xx系列,增加STM32G050, S ...
- Ubuntu常用命令及技巧 #小技巧 #常用终端命令 #远程管理 #SSH #FTP
Ubuntu常用命令及技巧) 零.思维导图 一.小技巧 二.终端命令格式 1)格式 2)查阅命令相关信息: 三.常用终端命令 1)目录相关 1>ls (list目录):查看当前路径包含的文件目录 ...
最新文章
- 《交互式程序设计 第2版》一3.1 下载并安装Processing
- mysql 主主+ Keepalived 高可用
- 虚荣的程序员--恶心,真的想吐
- 中有atoi函数吗_C++ 多态的实现及原理,深挖vptr指针,手动调用虚函数
- “21天好习惯”第一期-6
- Linux DNS服务详解——DNS基础知识
- 2022年中国游戏行业投融资发展报告
- 软件架构设计原则--开闭原则
- caffe 连接 matlab2016b
- McAfee Epo
- 极路由2hc5761刷华硕固件_[固件] 【原创首发】极二路由HC5761 9012.1.9227s成功刷成openwrt...
- 面试题:spring的循环依赖问题以及如何解决
- Createjs的控件 BitMap、MovieClip、Sprite
- 独孤九剑之SQL调优
- 之和质数c语言题判断,C语言经典例题100例——C语言练习实例33解答(质数判断)...
- python 读取csv文件转成字符串,python实现csv格式文件转为asc格式文件的方法
- Dubbo源码分析之构建远程Invoker
- 【技术推荐】WebLogic 反序列化漏洞深入分析
- 压力应力测试软件,管道强度和应力计算软件
- dynamic_cast实现原理