lua 中为了批量删除 元素 我写了如下代码

m={1,2,3,4,5,6}t={3,4}我要把t中的元素在m中删掉我写了如下代码functionshanchu(d,f)--l为删除组s为被删除组localw=dlo... m = {1,2,3,4,5,6} t = {3,4}
我要把 t中的元素在m中删掉 我写了如下代码
function shanchu(d,f) --l为删除组 s为被删除组
local w = d
local v = f
if(table.getn(w) < table.getn(v))then
for n = 1,table.getn(w) do
for i = 1,table.getn(v) do
if(w[n] == v[i])then
table.remove(w,n)
table.remove(v,i)
break
end
end
end

if(table.getn(w) == 0)then
return v
else
shanchu(w,v)
end
end
end

处理之后为什么不能返回得到的table呢?
展开
 我来答
yaoyue1019
2012-07-07 · 知道合伙人互联网行家
yaoyue1019
知道合伙人互联网行家
采纳数:804 获赞数:3392
擅长lua脚本 与android前端交互设计

向TA提问 私信TA
展开全部
首先 你要知道 非泛型for循环在循环开始的时候,就已经确定了这个循环会运行多少次
比如你的table m长度是6 那么你这个循环就会运行6次
在运行的过程中 如果你remove了一个值 那么你下次就必然会漏过一个
访问第一个
访问第二个 删除第二个
访问第三个
访问第四个

以上是你希望的
但实际运行的时候

访问第一个
访问第二个 删除第二个
访问第四个
访问超范围的第五个
-----------------
这是实际运行起来的效果
所以你要注意一下下标的访问
方法一,不用for 改用while
方法二,新建一个表 ,用于存放结果
蜗卡
2012-07-06 · TA获得超过566个赞
知道小有建树答主
回答量:611
采纳率:0%
帮助的人:369万
展开全部
不懂意思
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式