在lua語言中,一切皆是table,所有資料,函式都儲存在table中,但是當我們使用了table後,該如何清理table表中資料呢。
先看乙個函式:
table.remove(table[,pos]):刪除在pos位置上的元素,後面的元素會向前一棟,然後刪除的index會向前移動,導致刪除後的資料不是你想要的。當不填入pos時,刪除table末尾的資料。
看如下**:
local array =
for i,v in ipairs(array) do
if v == "a" then
table.remove(array, i)
endendfor i,v in ipairs(array) do
print(i,v)
end
上面我們想要刪除table表中所有「a」資料,但是輸出結果並沒有將所有「a」資料刪除。所以我們想連續刪除表中資料不能這樣使用,下面是正確刪除方法。
for i=#array,1,-1 do
if array[i] == "a" then
table.remove(array, i)
endendfor i,v in ipairs(array) do
print(i,v)
end
這樣就能得到正確的刪除結果了。
所以我們可以封裝乙個函式
-- 刪除table表中符合conditionfunc的資料
-- @param tb 要刪除資料的table
-- @param conditionfunc 符合要刪除的資料的條件函式
local function table.removetabledata(tb, conditionfunc)
-- body
if tb ~= nil and next(tb) ~= nil then
-- todo
for i = #tb, 1, -1 do
if conditionfunc(tb[i]) then
-- todo
table.remove(tb, i)
endend
endend-- 刪除資料是否符合條件
-- @param data 要刪除的資料
-- @return 返回是否符合刪除data條件
local function removecondition(data)
-- body
-- todo data 符合刪除的條件
return true
end
remove刪除元素
用列表的方法.remove 刪除列表中元素的時候,會改變列表的下標,從而發生出乎意料的錯誤。所以如果想要刪除列表中元素,可以用如下方法 錯誤的方法 a 1,2,3,4,5 b 1,2 for i in a if i in b a.remove i a 2,3,4,5 思考 刪除元素之後index是如...
Jsoup 刪除 remove的正確寫法
參考了一下這個例子,但是很遺憾,效果不大,要點在於jsoup的remove不能用賦值語句操作,否則就會出現這篇文章裡提到的情況 正確的做法是不要用等號賦值,elements.select class storyblock remove elements.select div remove eleme...
在lua中如何remove掉table裡面的資料
在lua開發中,資料儲存一般都會用tabel來儲存,但是在用到table之後,我們都會去清理table,那麼我該怎麼做呢?我們會呼叫到table中的remove函式來清理,但是需要注意的是,remove table,pos 刪除在pos位置上的元素,後面的元素會向前一棟,然後刪除的index會向前移...