如何跳出lua中的for循环

dot*_*dot 5 lua for-loop

我有以下代码:

  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 
Run Code Online (Sandbox Code Playgroud)

当重复设置为 true 时,我想一起退出 for 循环。现在,即使找到匹配项,它也会遍历表中的所有值。

我尝试使用 break 语句,但我认为它脱离了“if”语句。

我正在考虑一个 do while 循环,我可以环绕整个 for 循环,但我仍然需要一种方法来摆脱 for。

谢谢。

Oli*_*ver 5

我尝试了以下方法:

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 
Run Code Online (Sandbox Code Playgroud)

它有效:

trying  doe2
match doe   doe2    2   1
trying  doe1
match doe   doe1    1   1
found at k= doe1
breaking
Run Code Online (Sandbox Code Playgroud)

如您所见,它跳过了 a 和 doe3。因此错误在别处:var2 或您的名字不是您所想的(例如名称值是字符串而 var2 是数字),或者您没有任何匹配的键。