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
相關文章
- 全域性變數變數
- 全域性變數與區域性變數變數
- 區域性變數和全域性變數變數
- 全域性 DOM 變數變數
- Java區域性變數與全域性變數Java變數
- java 全域性變數和區域性變數Java變數
- jmeter全域性變數和區域性變數JMeter變數
- 【c】全域性變數與區域性變數變數
- vue定義全域性變數和全域性方法Vue變數
- js宣告全域性變數JS變數
- Python中的全域性變數和區域性變數Python變數
- JavaScript五:全域性變數&區域性變數;運算子JavaScript變數
- 全域性DOM變數的坑變數
- PHP 超級全域性變數PHP變數
- less 全域性變數使用 引用變數
- 【SQL Server】常用全域性變數SQLServer變數
- js-js的全域性變數和區域性變數JS變數
- mac配置全域性環境變數Mac變數
- process node.js全域性變數Node.js變數
- QT 全域性變數使用方法QT變數
- PHP超全域性變數$_SERVER分析PHP變數Server
- javascript全域性變數的使用注意JavaScript變數
- javascript中的作用域(全域性變數和區域性變數)JavaScript變數
- golang變數作用域問題-避免使用全域性變數Golang變數
- vue-cli 配置 sass 全域性變數Vue變數
- shell全域性(系統)環境變數變數
- Python定義全域性變數的用法Python變數
- 成員變數、全域性變數、例項變數、類變數、靜態變數和區域性變數的區別變數
- 簡述SHELL全域性環境變數與局變環境變數變數
- 區域性變數和全域性變數(靜態和非靜態)區別變數
- Vue Cli3.0 全域性引入 less 變數Vue變數
- python多執行緒-共享全域性變數Python執行緒變數
- 變數的分類(臨時(本地)變數、環境變數、全域性變數和系統變數)變數
- 介面測試實戰--postman全域性變數和環境變數Postman變數
- 表單驗證,為避免全域性汙染,少定義全域性變數寫法變數
- 函式之定義及全域性變數&區域性變數&風溼理論函式變數
- Python 關鍵字global全域性變數詳解Python變數
- nodejs在typescript專案中申明全域性變數NodeJSTypeScript變數
- 多執行緒中,區域性變數與全域性變數哪個比較安全?執行緒變數