刪除.png
前言#
看到這個(gè)清晰的大叉號(hào)圖片時(shí)我們不禁會(huì)想起關(guān)閉嗅榕、刪除等含義,今天我們總結(jié)的函數(shù)恰恰和刪除有關(guān)們熔任,這個(gè)函數(shù)也是表table
中的一個(gè)拆融,負(fù)責(zé)表中數(shù)據(jù)元素的刪除蠢琳,我們具體來看一下這個(gè)函數(shù)的用法。
內(nèi)容#
table.remove()##
- 原型:table.remove (tab_table [, pos])
- 解釋:在表
tab_table
的pop
位置刪除元素镜豹,并且的必要時(shí)移動(dòng)其他的元素(一般是將這個(gè)元素之后的元素向前移動(dòng))傲须,如果刪除成功函數(shù)返回被刪除的值,第二個(gè)參數(shù)pos
趟脂,默認(rèn)值為數(shù)組長(zhǎng)度泰讽,也就是省略第二個(gè)參數(shù)時(shí),會(huì)刪除table的最后一個(gè)元素昔期。
Usage##
- 首先新建一個(gè)文件命名為tableremovetest.lua然后編寫如下代碼:
local tabLanguage = {
"Assemblylanguage",
"Lua",
"c",
"c++",
"swift",
"java",
"python",
"ruby"
};
for k,v in pairs(tabLanguage) do
print(k,v)
end
print("LUA>>>>>>the length of table tabLanguage :", #tabLanguage, "\n")
-- 刪除元素
table.remove(tabLanguage)
table.remove(tabLanguage)
for k,v in pairs(tabLanguage) do
print(k,v)
end
print("LUA>>>>>>the length of table tabLanguage :", #tabLanguage, "\n")
-- 刪除元素
local removeitem = table.remove(tabLanguage, 3)
for k,v in pairs(tabLanguage) do
print(k,v)
end
print("LUA>>>>>>the length of table tabLanguage :", #tabLanguage, "\n")
print("remove data of tabLanguage is : "..removeitem)
-- 刪除不存在的元素
local removeitem = table.remove(tabLanguage, 99)
for k,v in pairs(tabLanguage) do
print(k,v)
end
print("LUA>>>>>>the length of table tabLanguage :", #tabLanguage, "\n")
print("remove data of tabLanguage is : "..(removeitem or "nil"))
-- 元素設(shè)置nil
tabLanguage[4] = nil;
for k,v in pairs(tabLanguage) do
print(k,v)
end
print("LUA>>>>>>the length of table tabLanguage :", #tabLanguage, "\n")
- 運(yùn)行結(jié)果
table_remove.png
總結(jié)#
- 從這組運(yùn)行結(jié)果可以看出已卸,當(dāng)省略參數(shù)
pos
時(shí)確實(shí)刪除的是最后一個(gè)元素。 - 當(dāng)刪除table中間的元素時(shí)镇眷,后面的元素黑自動(dòng)向前移動(dòng)咬最。
- 當(dāng)參數(shù)
pos
無效時(shí)翎嫡,函數(shù)不會(huì)修改數(shù)組欠动,并且會(huì)返回nil
表示刪除失敗。 - 當(dāng)我們把其中一個(gè)元素設(shè)置為
nil
時(shí),這個(gè)元素就從table中“消失”了具伍,后面的元素位置不會(huì)發(fā)生變化翅雏,并且影響了lenght的值,這和table.remove()
函數(shù)發(fā)揮的作用是不一樣的人芽,前者會(huì)導(dǎo)致這個(gè)原本正常的數(shù)組產(chǎn)生“空洞”望几。