全域性環境:lua
將其所有的全域性變數儲存在乙個常規的table中組成全域性環境,並通過全域性變數_g進行引用
。這種組織結構的優點在於
可以像操作其他
table
一樣操作這個
table
。有時我們想操作乙個全域性變數,而它的名稱卻儲存在另乙個變數中,或者需要通過執行時的計算才能得到,可以通過
value = _g[varname]
來獲得動態名字的全域性變數。
函式環境:lua中的函式環境就是函式在執行時所見的全域性變數的集合,以乙個表來承載,預設每個函式的函式環境為全域性環境,值得注意的是,每個lua檔案實質上就是乙個函式。每個函式都可以有自己的環境,可以通過
setfenv(parm1, parm2)
來顯示的指定乙個函式的環境,第乙個引數若是
1則表示當前函式,
2則表示呼叫當前函式的函式(依次類推),第二個引數是乙個新的環境
table
。如果不指定,函式的環境預設為定義該函式的函式環境。
a = 1 -- 這裡建立了乙個全域性變數
print(a) -- 輸出1
setfenv(1, ) -- 將當前環境變數改為乙個新的table
print(a) -– error:attempt to call global 'print' (a nil value)
g.print(a) -- 輸出nil
g.print(g.a) -- 輸出1
ubuntu之lua環境搭建
2,解壓 tar zxvf lua 5.3.4.tar.gz 3,進入主目錄 cd lua 5.3.4 然後執行 sudo make linux test 此時可能會報錯 lua.c 82 31 fatal error readline readline.h 沒有那個檔案或目錄 原因是缺少依賴庫 l...
Lua之基礎篇
新到一家公司,接觸有些業務竟然直接通過伺服器,在nginx層面就完成了,主要是基於openresty和lua來實現的。打算深入了解一下這門神奇的語言。為了嵌入應用程式中,從而為應用程式提供靈活的擴充套件和定製功能。安裝1 mac brew install lua 開發工具 vscode emmylu...
Lua 基礎之元表
print getmetatable hello 003e7050 print getmetatable lua 003e7050 print getmetatable 12 nil print getmetatable nil t print getmetatable t nil setmetat...