lua语言的一些注意事项
- 在控制结构的条件中除了false和nil为假,其他值都为真。所以Lua认为0和空串都是真。
- lua5.3之前的版本只支持浮点数,lua5.3才引入了对整数的支持,/仅支持浮点数除法,要实现C里的整除效果必须使用双斜杠//
- 超过2个字符串连接的情况下应使用table.concat,而不能使用字符串连接符...,那样效率很差、内存占用高,因lua里的字符串同java一样是不可变的
- 当table作为list使用时,下标从1开始(与其他语言大不一样,初学者最容易犯的错!)
- lua里用的是引用传递而非值复制
- 函数、变量命名建议使用类似C++的驼峰命名法
- 注意ipairs和pairs的区别,前者访问list,后者访问map
- table.unpack只能放在结尾使用,若放在中间,仅会取list的第一个元素
- 使用dofile时,被调用的lua文件中,如果有非接口函数,应使用local 修饰之,避免名字空间污染
- 尽量使用local来声明变量,可提高性能,同时避免可能的内存泄露
- lua的lambda写法并不会带来效率损失,可放心使用
lua lint工具
基于lua源码,开发了一个lua lint工具,该插件能够做如下检查:
- 基本的语法正确性检查
- 未使用local来声明变量(因全局变量将导致内存泄露!)
- 调用未声明的全局变量
- 未使用local声明却被同一文件中其他函数调用的函数