日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Lua table笔记

發布時間:2025/6/16 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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("列表數據為空") end

sort排序

如果希望第一個參數排在第二個參數前面,應該返回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笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。