lua全域性變數
全域性變數不需要宣告,雖然這對一些小程式來說很方便,但程式很大時,一個簡單的拼寫錯誤可能引起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
相關文章
- 靜態全域性變數和全域性變數變數
- 全域性變數變數
- node 全域性物件和全域性變數物件變數
- 全域性變數與區域性變數變數
- 區域性變數和全域性變數變數
- 全域性 DOM 變數變數
- C語言區域性變數、全域性變數、靜態區域性變數、靜態全域性變數C語言變數
- angular中定義全域性變數及全域性變數的使用Angular變數
- Java區域性變數與全域性變數Java變數
- java 全域性變數和區域性變數Java變數
- JavaScript —— 區域性變數和全域性變數JavaScript變數
- jmeter全域性變數和區域性變數JMeter變數
- 【c】全域性變數與區域性變數變數
- vue定義全域性變數和全域性方法Vue變數
- js宣告全域性變數JS變數
- python全域性變數Python變數
- SQL Server 全域性變數SQLServer變數
- lua非全域性函式函式
- python全域性變數與區域性變數Python變數
- JavaScript五:全域性變數&區域性變數;運算子JavaScript變數
- python全域性變數和區域性變數, globalPython變數
- PHP 超級全域性變數PHP變數
- 全域性DOM變數的坑變數
- 少用全域性變數的原因變數
- DB2_全域性變數DB2變數
- SQLServer全域性變數詳介SQLServer變數
- android使用全域性變數Android變數
- 【SQL Server】常用全域性變數SQLServer變數
- iOS 靜變數static、全域性變數extern、區域性變數、例項變數iOS變數
- ODI第9節-變數(三):全域性變數變數
- Python中的全域性變數和區域性變數Python變數
- js-js的全域性變數和區域性變數JS變數
- Python全域性變數與區域性變數詳解Python變數
- 詳解python 區域性變數與全域性變數Python變數
- 全域性變數和靜態變數的區別變數
- PHP超全域性變數$_SERVER分析PHP變數Server
- javascript全域性變數的使用注意JavaScript變數
- mac配置全域性環境變數Mac變數