You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Lua代码中==比较未返回预期false,脚本未终止问题求助

Lua代码未触发多变量终止问题的解决

你的代码核心问题是运算符优先级错误,导致判断逻辑完全不符合预期,因此发现不同变量时不会触发quit操作。

错误原因

Lua中not的优先级高于==,所以你写的if not var == check then会先执行not var(非空字符串取not结果为false),再将false和字符串类型的check比较,结果永远是false,自然不会进入if块调用quit。

修正方案

有两种方式可以修正这个判断逻辑:

  1. 使用Lua的不等于运算符~=,直接判断两个变量是否不同:
if var ~= check then
    quit("Error. Multiple variables.", true)
end
  1. 给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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 17:27:15