Lua table笔记
記錄我在使用lua的過程中的一些筆記
默認key為數字遞增
local tb={"A",[3]="C","B"}
這個tb通過下標1,2,3打印出來是:ABC
ipairs和pair
ipair的鍵是有順序的從1到n,遇到nil結束遍歷,pair是無順序的,會完整遍歷table
某它解釋:
ipair是從key=1,開始累加,遇到val是nil就結束循環。
pair輸出的結果和table定義的順序是一致的(非數組不保證與聲明的順序一致)。
table.insert
語法:table.insert(要插入的table,要插入的數據)
next
next(table [, index])
解釋:使程序可以遍歷表table的所有字段。他的第一個參數是一個表,第二個參數是一個表中有效的索引。函數會返回表中相對于指定索引的下一個索引和索引位置的值,當我們將第二個參數設置為nil調用函數時,函數會返回這個表的初始索引和該索引位置的值,當我們使用表的最后一個索引或者在空表中使用nil做索引時,函數就會返回nil。當我們省略第二個參數時,它會被默認解釋成nil。特別的,你可以使用next(t)的形式來檢測表是否為空。
示例:
if next(self.data) thenlocal item = self.data[1] elsewarn("列表數據為空") endsort排序
如果希望第一個參數排在第二個參數前面,應該返回true。如果沒有提供,sort使用默認的<操作。
示例:可領取的排在前面,其它按時間進行排序
---NOTE 讓vo1在vo2的前面返回truetable.sort(self.data, function(vo1, vo2)if not canRecv(vo1) and not canRecv(vo2) then---按時間排序return vo1.initTime < vo2.initTimeendif canRecv(vo1) and not canRecv(vo2) thenreturn trueend---讓vo2在vo1的前面,返回falseif canRecv(vo2) and not canRecv(vo1) thenreturn falseend end)刪除table元素
在使用for(遍歷)table時,不要對這個table的元素進行刪除操作
正確的做法是把需要刪除的數據緩存到某個table中,然后再進行刪除
示例:
function DropItemModel:DemoRemoveItem() local tmpTb = {}for k, v in pairs(self.dropItems) dolocal dropModel = DataCenter.models[v]if v and dropModel thentable.insert(tmpTb, k)endend---進行元素的刪除操作for i = 1, #tmpTb doself.dropItems[tmpTb[i]] = nilend end轉載于:https://www.cnblogs.com/zhaoqingqing/p/8309564.html
總結
以上是生活随笔為你收集整理的Lua table笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python----1
- 下一篇: DAY9-字符串笔记整理2018-1-1