我有以下代码:
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。
谢谢。
我尝试了以下方法:
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 是数字),或者您没有任何匹配的键。