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

Lua条件判断异常:if语句始终执行else分支求助

问题排查与解决

你的函数逻辑本身没问题,之所以传2、3、4这些值始终返回99,核心原因是传入的angleNumber参数类型不匹配——比如你调用时传的是字符串(如"2")而非数字(2)。Lua中字符串和数字用==比较会直接返回false,所以所有匹配分支都走不到,最终触发else返回99。

验证方法

在函数开头加一行打印,查看参数的类型和实际值:

local function mirroredNumber (angleNumber)
    print(type(angleNumber), angleNumber) -- 打印参数类型与值
    if angleNumber == 2 then
        return 8
    elseif angleNumber == 3 then
        return 7
    elseif angleNumber == 4 then
        return 6
    elseif angleNumber == 6 then
        return 4
    elseif angleNumber == 7 then
        return 3
    elseif angleNumber == 8 then
        return 2
    else
        return 99
    end
end

调用后如果输出是string 2,就坐实了参数是字符串的问题。

解决办法

有两种处理方式:

  • 方式一:调用函数时确保传入数字类型,比如mirroredNumber(2)而不是mirroredNumber("2")
  • 方式二:在函数内部先将参数转为数字,兼容字符串输入:
local function mirroredNumber (angleNumber)
    angleNumber = tonumber(angleNumber) -- 转换为数字,失败则返回nil
    if angleNumber == 2 then
        return 8
    elseif angleNumber == 3 then
        return 7
    elseif angleNumber == 4 then
        return 6
    elseif angleNumber == 6 then
        return 4
    elseif angleNumber == 7 then
        return 3
    elseif angleNumber == 8 then
        return 2
    else
        return 99
    end
end

内容的提问来源于stack exchange,提问作者Jan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 03:42:42