Lua代码中==比较未返回预期false,脚本未终止问题求助
Lua代码未触发多变量终止问题的解决
你的代码核心问题是运算符优先级错误,导致判断逻辑完全不符合预期,因此发现不同变量时不会触发quit操作。
错误原因
Lua中not的优先级高于==,所以你写的if not var == check then会先执行not var(非空字符串取not结果为false),再将false和字符串类型的check比较,结果永远是false,自然不会进入if块调用quit。
修正方案
有两种方式可以修正这个判断逻辑:
- 使用Lua的不等于运算符
~=,直接判断两个变量是否不同:
if var ~= check then quit("Error. Multiple variables.", true) end
- 给
var == check加上括号,强制先执行相等判断,再取反:
if not (var == check) then quit("Error. Multiple variables.", true) end
修正后的完整代码
function findVar() local i = string.find(equation, "%a") local var = string.sub(equation, i, i) -- 建议改为局部变量,避免全局污染 while true do i = string.find(equation, "%a", i + 1) if i == nil then break end local check = string.sub(equation, i, i) -- 建议改为局部变量 if var ~= check then quit("Error. Multiple variables.", true) end end end
内容的提问来源于stack exchange,提问作者kuligarl
相关产品推荐
相关产品推荐

