lua迭代刪除坑

2021-10-09 14:18:12 字數 440 閱讀 6841

1、下面迭代刪除 只刪除乙個資料沒問題 > 1 個資料 只能刪除 一半或者一半+1個

for k,v in ipairs(arr) do

if v.*** = *** then

table.remove(arr,k)

endend

2、下面迭代刪除 只刪除乙個沒問題 刪除多個會出問題 因為邊迭代邊刪除會改變table結構導致有一些資料沒有迭代到

for k,v in pairs(arr) do

if v.*** = *** then

table.remove(arr,k)

endend

3、總結使用lua迭代器 中刪除資料 刪除乙個沒有問題 刪除所有使用pairs也沒有問題  但是刪除部分資料都會出現問題  會出現偶現的bug 以上問題是專案中使用遇到的,平時練習都沒有注意到  因為專案**現問題所以分享一下遇到的坑

lua迭代器原理

當lua呼叫for迴圈中的ipairs a 時,它會獲得三個值 迭代器函式iter 恆定狀態a和控制變數的處置0。然後lua呼叫iter a,0 得到1,a 1 在第二次迭代中,繼續呼叫iter a,1 得到2,a 2 依次類推,直到得到的第乙個nil元素為止。pairs與ipairs類似,也是用於...

Lua 迭代器初學

和c 類似,lua也有迭代器,如汎型for。泛型for需要三個值 迭代函式 狀態常量 控制變數 乙個典型的泛型for如下 for k,v in pairs t do print k,v end 泛型for的執行過程 首先,初始化,計算 in 後面表示式的值,表示式應該返回泛型for需要的三個值 迭代...

Lua基礎 迭代器

官方的文件說 迭代器 iterator 是一種物件,它能夠用來遍歷標準模板庫容器中的部分或全部元素,每個迭代器物件代表容器中的確定的位址 在lua中迭代器是一種支援指標型別的結構,它可以遍歷集合的每乙個元素。迭代器的種類主要有 泛型for迭代器 無狀態的迭代器 多狀態的迭代器 下面看幾個例子 ipa...