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聲明卻被同一文件中其他函數調用的函數