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
相关产品推荐
相关产品推荐

