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”
输入到
中,如果重复,则输入
,然后查看是否命中它们?你能不能也发一篇文章,让我们看看里面有什么?