Lua基礎之環境

2021-09-29 10:37:49 字數 910 閱讀 8859

全域性環境: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...