全局環(huán)境
Lua 把全局變量放在一個(gè) table _G 中,這個(gè) table 被叫做全局環(huán)境(global environment)。打印所有的全局變量名:
_ENV(Lua 5.2 開(kāi)始支持)
對(duì)于一個(gè) free name(名字沒(méi)有綁定任何聲明)var 實(shí)際上會(huì)被轉(zhuǎn)換為 _ENV.var(每個(gè) chunk 中都會(huì)存在一個(gè)名為 _ENV 的變量):
任何作為 _ENV 的值的 table 被叫做環(huán)境(environment)。Lua 加載一個(gè) chunk 的時(shí)候,此 chunk 的 _ENV 默認(rèn)值為全局環(huán)境。看一個(gè)簡(jiǎn)單的例子:
一個(gè)比較有趣的例子是:
正如前面說(shuō)的 a 會(huì)被轉(zhuǎn)換為 _ENV.a,而 do end 中定義了一個(gè)新的 _ENV,因此第一個(gè) print(a) 輸出了局部變量 _ENV 的 a 的值。由此可以看到,我們可以很容易的為一個(gè)函數(shù)創(chuàng)建一個(gè)私有的環(huán)境:
類似的,我們?cè)诓煌暮瘮?shù)中共享一個(gè)特定的公共環(huán)境也是很容易做到的。
|
新聞熱點(diǎn)
疑難解答
圖片精選