成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

LUA中關(guān)于全局變量環(huán)境學(xué)習(xí)教程

移動(dòng)開發(fā) iOS
LUA在全局變量的實(shí)現(xiàn)方式上用了一個(gè)絕對(duì)讓我們喜聞樂見的做法,復(fù)用已有的table機(jī)制,將全局變量都保存在_G表中。這樣做好處很多。

LUA中關(guān)于全局變量環(huán)境是本文要介紹的內(nèi)容,主要輸來了解并學(xué)習(xí)全局變量的環(huán)境,具體內(nèi)容先來看本文詳解。

一、全局變量的環(huán)境

LUA在全局變量的實(shí)現(xiàn)方式上用了一個(gè)絕對(duì)讓我們喜聞樂見的做法,復(fù)用已有的table機(jī)制,將全局變量都保存在_G表中。這樣做好處很多。

從語言實(shí)現(xiàn)角度來說,不需要為了全局變量單獨(dú)去做一份實(shí)現(xiàn),只要復(fù)用下table機(jī)制即可。

從使用角度來說,雖然你是全局變量看起來較為牛逼(local變量內(nèi)牛滿面的蹲在一邊哭)一點(diǎn),但是你也不幸的被放在了table中。于是所有針對(duì)一個(gè)table可以做的事情針對(duì)全局量一樣可以做:

1、變量動(dòng)態(tài)名稱訪問: 運(yùn)行期才知道那全局量叫啥,訪問起來吃力。現(xiàn)在好了,因?yàn)榉旁诹藅able中,所以只要寫上 _G[varname] 就可以訪問了,寫上 _G[varname]=ABC就可以賦值了。不用再去靠拼接字符串來chunk代碼了。

2、metatable可以使用。雖然又提到了metatable,不用說這里指代的是table御用__index和__newindex運(yùn)算符。通過實(shí)現(xiàn)這兩個(gè)運(yùn)算符,我們可以對(duì)全局變量_G表做許多的事情,其中最常見的就是,通過重新實(shí)現(xiàn)__index和__newindex來為LUA中的全局變量使用規(guī)則進(jìn)行修改,加上強(qiáng)類型語言中的“先聲明后使用,不聲明不能用”的規(guī)則。這點(diǎn)在手冊(cè)上有詳細(xì)的描述不再COPY。

二、全局變量的局部環(huán)境

在C++中變量的作用域是從內(nèi)向外查找,并且具備遮蔽效果。在lua中全局變量方面,有一個(gè)特點(diǎn)很有意思,就是允許每一個(gè)函數(shù)具有自己的局部“全局環(huán)境”,聽著沖突其實(shí)不然。“局部”意指函數(shù)的內(nèi)部,“全局環(huán)境”就是指全局變量保存的_G表。也就是說LUA允許每一個(gè)函數(shù)內(nèi)部使用一個(gè)私有的_G表,在文章中,這被稱作是函數(shù)的環(huán)境。setfenv()可以更改一個(gè)指定函數(shù)的環(huán)境,***個(gè)參數(shù)為函數(shù)名,第二個(gè)參數(shù)為這個(gè)函數(shù)的私有_G名,可以先初始化好再傳遞過去。***個(gè)參數(shù)也可以是一個(gè)數(shù)字,1表示當(dāng)前正在執(zhí)行的這個(gè)函數(shù),2表示當(dāng)前函數(shù)的調(diào)用者,3表示調(diào)用者的調(diào)用者(其實(shí)這個(gè)數(shù)字是棧頂?shù)幕顒?dòng)函數(shù)調(diào)用層次)。

不過要注意一點(diǎn),調(diào)用setfenv()設(shè)置了私有_G表后,原來的_G表默認(rèn)就不可訪問了,這個(gè)時(shí)候很多原來_G中的函數(shù)你都無法使用,比如print。因此你可以或者在私有_G表中保存原始_G表,或者為私有_G表設(shè)置__index操作符指向原始_G表,相比來說我更喜歡后者,優(yōu)雅且省事(懶%……)。

ps, 感慨下,table是LUA中的***復(fù)雜結(jié)構(gòu),所有復(fù)雜的數(shù)據(jù)結(jié)構(gòu)和描述都要基于此。__index和__newindex是table非常重要的兩個(gè)metatable運(yùn)算符沒有之一。

小結(jié):LUA中關(guān)于全局變量環(huán)境學(xué)習(xí)教程的內(nèi)容介紹完了,希望通過本文的學(xué)習(xí)能對(duì)你有所幫助!

責(zé)任編輯:zhaolei 來源: 博客園
相關(guān)推薦

2011-08-24 15:22:09

2011-08-25 13:44:11

LUA下載SciTE

2011-08-24 14:14:13

LUA環(huán)境 配置

2011-08-24 15:34:44

MinGWLua環(huán)境配置

2011-08-23 16:37:05

Lua數(shù)學(xué)庫

2013-07-17 16:16:06

Android全局變量定義全局變量Application

2011-08-24 17:09:35

LUA閉包函數(shù)

2011-08-23 15:34:56

Lua模式 匹配

2011-08-23 17:06:03

2011-08-24 13:27:07

Lua 游戲C接口腳本

2010-02-01 14:28:37

Python全局變量

2009-11-06 13:28:19

Javascript框

2011-08-24 11:03:33

LUA環(huán)境 安裝

2011-08-23 16:59:16

C++LUA腳本LUA API

2024-05-27 09:18:18

2011-08-25 15:41:42

Lua源碼

2011-08-24 15:42:38

LUA源代碼

2011-08-23 16:48:41

Lua 5.1API 函數(shù)

2024-05-29 08:49:22

Python全局變量局部變量

2015-01-07 14:41:32

Android全局變量局部變量
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 欧美日韩国产一区二区三区 | 国产日韩精品在线 | 国产一区影院 | 色爱综合 | 一级在线观看 | 国产日韩精品在线 | 亚洲精品视频在线播放 | 久久久av | 欧美日韩精品免费观看 | 欧美成人一区二区三区 | 国产一区二区三区免费观看视频 | 欧美视频福利 | 午夜精品网站 | 久久久久久久久淑女av国产精品 | 美国十次成人欧美色导视频 | 欧美日韩成人网 | 日韩视频在线播放 | 欧美在线高清 | 欧美网站一区二区 | 欧美极品在线观看 | 国产精品久久久久久久久久久久久 | a级毛片基地 | 免费的色网站 | 国产精品一区二区无线 | 欧美精品第一页 | 亚洲人成人一区二区在线观看 | 亚洲欧美日韩中文字幕一区二区三区 | 欧美日韩成人在线观看 | 日韩a在线| 亚洲三区视频 | 成人自拍视频网站 | 国产乱码精品一区二区三区忘忧草 | 亚洲精久久 | 一区二区免费看 | 亚洲国产精品福利 | 成人字幕网zmw| 欧美黑人又粗大 | 国产精品日韩在线观看一区二区 | 欧美性生活一区二区三区 | 欧美成年人 | 亚洲在线一区 |