好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > Lua table中安全移除元素的方法

Lua table中安全移除元素的方法

熱門標簽:免費門店地圖標注注冊入駐 昆明電話外呼系統好么 艾比利外呼系統 衡水外呼線路解決 外呼系統一天耗費多少流量 電話機器人每天搜索多少次 杞縣地圖標注app 海口智能語音電銷機器人好用嗎 陜西便宜電銷機器人軟件

在Lua中,table如何安全的移除元素這點挺重要,因為如果不小心,會沒有正確的移除,造成內存泄漏。

引子

比如有些朋友常常這么做,大家看有啥問題

將test表中的偶數移除掉

復制代碼 代碼如下:

local test = { 2, 3, 4, 8, 9, 100, 20, 13, 15, 7, 11}
for i, v in ipairs( test ) do
    if v % 2 == 0 then
        table.remove(test, i)
    end
end

for i, v in ipairs( test ) do
    print(i .. "====" .. v)
end


打印結果:
復制代碼 代碼如下:

1====3
2====8
3====9
4====20
5====13
6====15
7====7
8====11
[Finished in 0.0s]

有問題吧,20怎么還在?這就是在遍歷中刪除導致的。

如何做呢?

Let's get started!

復制代碼 代碼如下:

local test = { 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p' }
local remove = { a = true, b = true, c = true, e = true, f = true, p = true }

local function dump(table)
    for k, v in pairs( table ) do
        print(k)
        print(v)
        print("*********")
    end
end


說明:一般我們不在循環中刪除,在循環中刪除會造成一些錯誤。這是可以建立一個remove表用來標記將要刪除的,如上面例子,把將要刪除的標記為true

方法1 從后往前刪除

復制代碼 代碼如下:

for i = #test, 1, -1 do
    if remove[test[i]] then
        table.remove(test, i)
    end
end

dump(test)


為什么不從前往后,朋友們可以測試,table.remove操作后,后面的元素會往前移位,這時候后續的刪除索引對應的元素已經不是之前的索引對應的元素了。


方法2 while刪除

復制代碼 代碼如下:

 local i = 1
while i = #test do
    if remove[test[i]] then
        table.remove(test, i)
    else
        i = i + 1
    end
end

方法3 quick中提供的removeItem

復制代碼 代碼如下:

 function table.removeItem(list, item, removeAll)
    local rmCount = 0
    for i = 1, #list do
        if list[i - rmCount] == item then
            table.remove(list, i - rmCount)
            if removeAll then
                rmCount = rmCount + 1
            else
                break
            end
        end
    end
end

for k, v in pairs( remove ) do
    table.removeItem(test, k)
end

dump(test)

您可能感興趣的文章:
  • 深入談談lua中神奇的table
  • Lua Table轉C# Dictionary的方法示例
  • Lua中設置table為只讀屬性的方法詳解
  • Lua編程示例(一):select、debug、可變參數、table操作、error
  • 舉例講解Lua中的Table數據結構
  • Lua的table庫函數insert、remove、concat、sort詳細介紹
  • C++遍歷Lua table的方法實例
  • Lua中釋放table占用內存的方法
  • Lua中table的遍歷詳解
  • Lua中獲取table長度問題探討
  • Lua中獲取table長度的方法
  • Lua中table里內嵌table的例子
  • Lua面向對象編程之基礎結構table簡例

標簽:泰安 海口 營口 宿遷 昌都 西寧 臨滄 南京

巨人網絡通訊聲明:本文標題《Lua table中安全移除元素的方法》,本文關鍵詞  Lua,table,中,安全,移,除,元素,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Lua table中安全移除元素的方法》相關的同類信息!
  • 本頁收集關于Lua table中安全移除元素的方法的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 99久久精品免费看国产四区| 久艹视频在线| 曰本美女毛片XXXXXXXXX| 精品国产一二三区在线影院| 19+韩国美女vip视频| 公与两个熄韩国高清bd免费看| 国产毛片乡下农村妇女毛片| 啊灬啊灬别停啊灬用力啊在线观看| 色射综合| 精品人妻无码一区二区三区不卡| 亚洲欧洲日产国产最新| 麻豆精品国产熟妇澳门体彩| 暴力肉体进入hdxxxxx| 健身教练猛撞人妻H| xx中文字幕乱偷avxx| 天天躁天天爽天天揉免费精品毛片| 国产AV精品亚洲AV蟹美脚| 美女暴露无内衣完整视频| 被粗大的猛烈的进出感受| Japan女学生惩罚打光屁屁| 一级a一级a爰片免费免免软件ww| 华人欧美国产在线精品| 铁牛tv萌白酱| 人人妻人人澡人人爽人人学生| 色佬视频在线观看免费观看| 我的邻居是exo在线观看免费高清电视剧| 亚洲AV综合一区二区三区| 在线观看茄子视频app| 扒开肥白的屁股啪啪| 花式道具play高h文调教| 在线一区二区三区做爰视频网站| 女人18一级毛片免费观看| 中文字幕精品无码亚洲电影| 牛牛影视在线| 91精品国产白丝一区区三区四区| 亚洲裸色大胆大尺寸艺术写真| 欧美?肥老妇??视频九色| 精品国产一区二区三区四区在线| 1717she国产精品免费视频| 美女模特被c?免费视频| 一级毛片aaaaaa免费看|