lua全域性變數

iteye_21202發表於2013-04-25

全域性變數不需要宣告,雖然這對一些小程式來說很方便,但程式很大時,一個簡單的拼寫錯誤可能引起bug並且很難發現。然而,如果我們喜歡,我們可以改變這種行為。因為Lua所有的全域性變數都儲存在一個普通的表中,我們可以使用metatables來改變訪問全域性變數的行為。

第一個方法如下:

setmetatable(_G, {

__newindex = function (_, n)

error("attempt to write to undeclared variable "..n, 2)

end,

__index = function (_, n)

error("attempt to read undeclared variable "..n, 2)

end,

})

這樣一來,任何企圖訪問一個不存在的全域性變數的操作都會引起錯誤:

> a = 1

stdin:1: attempt to write to undeclared variable a

相關文章