For loop 如何在lua中打破for循环
我有以下代码:For loop 如何在lua中打破for循环,for-loop,lua,For Loop,Lua,我有以下代码: for k, v in pairs(temptable) do if string.match(k,'doe') then if v["name"] == var2 then txterr = "Invalid name for "..k duplicate = true end if dup
for k, v in pairs(temptable) do
if string.match(k,'doe') then
if v["name"] == var2 then
txterr = "Invalid name for "..k
duplicate = true
end
if duplicate then
break
end
end
end
当duplicate设置为true时,我希望一起退出for循环。现在,它只是循环表中的所有值,即使它找到了匹配项
我尝试使用break语句,但我认为它脱离了“if”语句
我在考虑一个do-while循环,我可以环绕整个for循环,但是我仍然需要一种方法来打破for循环
谢谢。我尝试了以下方法:
temptable = {a=1, doe1={name=1}, doe2={name=2}, doe3={name=2}}
var2 = 1
for k, v in pairs(temptable) do
print('trying', k)
if string.match(k,'doe') then
print('match doe', k, v.name, var2)
if v["name"] == var2 then
txterr = "Invalid name for "..k
duplicate = true
print('found at k=', k)
end
if duplicate then
print('breaking')
break
end
end
end
它的工作原理是:
trying doe2
match doe doe2 2 1
trying doe1
match doe doe1 1 1
found at k= doe1
breaking
如您所见,它跳过了a和doe3。因此,错误在别处:var2或您的名称不是您所想的(比如名称值是字符串,而var2是数字),或者您没有任何匹配的键 使用
break
的方法是正确的,因此问题不在代码的这一部分。发布更多上下文(可诱惑的的内容,是否在某处定义了重复等)。即使它找到了匹配项
您是否添加了一些print
语句以查看命中的内容,即:如果v[“name”]==var2,则将打印“找到的重复项”
到中,并且另一个print“duplicate is true”
输入到中,如果重复,则输入,然后查看是否命中它们?你能不能也发一篇文章,让我们看看里面有什么?