lua小技巧(二) lua全域性變數的檢測

2021-09-08 22:15:31 字數 318 閱讀 9291

相信用lua的人都遇到過由於拼寫錯誤把區域性變數變成全域性變數的情況,如何避免這個問題呢?

直接上**!

local mt = 

setmetatable(_g, mt)

先給全域性表_g設定metatable,當訪問到不存在的全域性變數,或者對不存在的全域性變數進行賦值時,呼叫debug.getinfo(2, 「s」)獲取呼叫的堆疊,如果不在主函式訪問或者賦值新的全域性變數,則丟擲日誌,提示開發者修改。

這就保證了全域性變數只能在主函式宣告,其它模組無法直接訪問或者賦值未宣告的全域性模組,也就避免了大部分區域性模組拼寫錯誤的問題。

lua小技巧 lua全域性變數的檢測

相信用lua的人都遇到過由於拼寫錯誤把區域性變數變成全域性變數的情況,如何避免這個問題呢?直接上 local mt setmetatable g,mt 先給全域性表 g設定metatable,當訪問到不存在的全域性變數,或者對不存在的全域性變數進行賦值時,呼叫debug.getinfo 2,s 獲取...

Lua 全域性變數和區域性變數

在lua中宣告乙個全域性變數很簡單 a 5直接賦值就可以,而且也不會限制變數的型別,我們可以直接把number型別的變數賦值string a hello 宣告乙個區域性變數需要在前面加上關鍵字 local local b 10區域性變數在當前 塊結束後就會銷毀 用do end命令建立乙個 塊 do ...

lua程式設計 全域性變數 環境 模組

1.全域性變數與環境 lua中真正儲存全域性變數的地方不是在 g裡面,而是在setfenv i,table 的table中,所有當前的全域性變數都在這裡面找,只不過在程式開始時lua會預設先設定乙個變數 g 這個裡面的table而已。所以在新設定環境後,如果還想找到之前的全域性變數,通常需要附加上為...