lua中的一種重要的數(shù)據(jù)結(jié)構(gòu):table
一 ? ?table的特性讓我們編程更加方便:
????1 ?table是一種關(guān)聯(lián)數(shù)組蜻势,數(shù)組的索引可以是數(shù)字或者字符串
????2 ?table的默認(rèn)初始索引一般以1開始
????3 table的變量只是一個(gè)地址引用撑刺,對(duì)table的操作不會(huì)產(chǎn)生數(shù)據(jù)影響、
????4 table不會(huì)固定長(zhǎng)度大小握玛,有數(shù)據(jù)插入時(shí)長(zhǎng)度會(huì)自動(dòng)增長(zhǎng)
????5 table所有索引值都需要[]括起來够傍,如果是字符串,可以去掉引號(hào)和中括號(hào)挠铲;如果沒有[]冕屯,則認(rèn)為是字符串索引
????6 table所有元素之間,總是用"拂苹,"隔開
二 table的基礎(chǔ)操作
? ? 1 table.insert(table, pos ,value)將一個(gè)元素插入到指定位置
? ? 2 table.remove(table,pos) 從最后一個(gè)元素刪起安聘,pos位置可選只能是數(shù)字類型
? ? 3 table.getn(table) 返回table中的元素個(gè)數(shù)
? ? 4 table.maxn(table) 返回最大key值????
? ? 5 table.sort(table,comp) 參數(shù)comp是一個(gè)排序?qū)Ρ群瘮?shù),它有兩個(gè)參數(shù)param1和param2瓢棒,如果param1排在param2前面浴韭,那么排序函數(shù)返回true,否則返回false音羞;參數(shù)comp可選囱桨,缺省comp的情況下是對(duì)表作升序排序
? ? 6 table的遍歷 ?pairs遍歷是根據(jù)key值的hash值排列的順序來遍歷的 ? ?ipairs是必須要按照key為順序的,必須從1開始
三 table面向?qū)ο?/p>
? ? lua中不存在類的定義這樣一個(gè)概念嗅绰,不管是類的定義還是類的實(shí)例都需要lua table來模擬舍肠。
? ? 類:lua沒有類的概念,不過可以通過元表(metatable)來實(shí)現(xiàn)與原型prototype類似的功能窘面,而prototype翠语。lua使用元表__index事件來實(shí)現(xiàn),當(dāng)調(diào)用對(duì)象沒定義的方法時(shí)财边,會(huì)向其元表的__index鍵查找肌括。例如有a和b兩個(gè)對(duì)象,想讓b作為a的原型prototype酣难,只需要把b設(shè)置為a元表的__index值就行谍夭;a找不到任何不存在的成員都會(huì)到對(duì)象b中查找,a擁有或調(diào)用b的屬性或者方法憨募,b可以看作是一個(gè)類紧索,a是b的對(duì)象
四 lua閉包