Lua table.remove()
2016-08-05 本文已影响9551人
AlbertS
删除.png
前言#
看到这个清晰的大叉号图片时我们不禁会想起关闭、删除等含义,今天我们总结的函数恰恰和删除有关们,这个函数也是表table
中的一个,负责表中数据元素的删除,我们具体来看一下这个函数的用法。
内容#
table.remove()##
- 原型:table.remove (tab_table [, pos])
- 解释:在表
tab_table
的pop
位置删除元素,并且的必要时移动其他的元素(一般是将这个元素之后的元素向前移动),如果删除成功函数返回被删除的值,第二个参数pos
,默认值为数组长度,也就是省略第二个参数时,会删除table的最后一个元素。
Usage##
- 首先新建一个文件命名为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"))
-- 元素设置nil
tabLanguage[4] = nil;
for k,v in pairs(tabLanguage) do
print(k,v)
end
print("LUA>>>>>>the length of table tabLanguage :", #tabLanguage, "\n")
- 运行结果
总结#
- 从这组运行结果可以看出,当省略参数
pos
时确实删除的是最后一个元素。 - 当删除table中间的元素时,后面的元素黑自动向前移动。
- 当参数
pos
无效时,函数不会修改数组,并且会返回nil
表示删除失败。 - 当我们把其中一个元素设置为
nil
时,这个元素就从table中“消失”了,后面的元素位置不会发生变化,并且影响了lenght的值,这和table.remove()
函数发挥的作用是不一样的,前者会导致这个原本正常的数组产生“空洞”。