之前對于Lua的研究都是紙上談兵,沒有真正的項目練手,現在公司的項目基本上都是用Lua開發,是時候補充一下我那蹩腳的Lua知識了。
基礎數據類型、表達式、循環結構什么的我就不說了,這么簡單的東西說了也要被大家噴。
今天我想說說table的幾種構造方式。
0.Lua調試工具——LuaEditor
首先,如果你是第一次接觸Lua,請補充一下Lua的最基本之中的基礎語法(小若:O O?。?,然后下載一個LuaEditor工具,用來查看Lua執行效果,當然也可以調試,本篇內容不解釋這個工具??梢园俣纫幌逻@個工具。
1.什么是table?
table是Lua最復雜最強大的數據結構,Lua本身并不是面向對象語言,但是對面向對象中毒比較深的程序員,可以借助table”完美”地模擬面向對象編程。最簡單地,我們可以把table理解為數組,最復雜的,我們可以把table理解為”世間萬物”,因為它可以創造出很多你想象不到的東西。一個字,自由度非常大~?。ㄐ∪簦阂粋€字,你妹~?。?/p>
2.如何創建一個table?
創建table是一件很復雜的事情,不知道大家頂不頂得住,試試看,如下:
3.如何初始化一個table
嗷,雖然創建table已經很復雜了,更復雜的還在后面,怎么初始化table?看看下面的代碼:
這挺神奇的,感覺就像是在定義數組,不是嗎?
table間的元素用逗號分隔,["x"] = 12代表構造一個table元素,下標為”x”,值為12。(小若:為毛數組下標可以是字符串?)
嗷~!我就等旁白問這個問題,旁白你笨蛋啊,我只是說table像數組,我沒有說它就是數組,table支持幾乎是所有類型的下標,包括函數。
(小若:。。。以后我不會中計了,喵…)
4.有更簡潔的方式
這種初始化方式看起來太復雜了,有沒有簡單點的?看看下面的代碼:
但是,a["x"]這種調用方式也很煩人不是嗎?程序員都很懶的,所以Lua支持一下這種方式的調用:
記住,是字符串下標才這么做。
記住,是字符串下標才這么做。(小若:你再說一句試試,我保證以后不幫你吐槽。)
5.想要默認數字索引怎么辦?
如果說,大家習慣了數組,用數字下標,又不想自己一個個數字地定義,比如:
再一次警告旁白,table類似數組,但它絕對不是數組。
table默認的第一個索引下標是1,并且很多相關的函數也假設table的第一個索引下標為1,所以大家最好遵守這個規則。
6.更強大的應用之table的table
table什么都能放,當然也能放table了,如下:
因此,a的第一個元素就是{x = 1, y = 2},調用a的第一個元素的方式為:a[1]
由于a[1]又是一個table,所以,再次調用table的x下標的值:a[1].x
這樣就OK了。
7.更強大的應用之函數下標
我們最后來試試更好玩的,用一個函數當table的下標:
新聞熱點
疑難解答