Lua:试图将布尔值与数字进行比较。

我在以下代码中遇到了错误:“尝试将布尔值与数字进行比较”

local x = get_x_from_db() -- x 可能为 -2,-1 或类似 12345 的整数
if 0 < x < 128 then
    -- 做一些事情
end

是什么导致了这个错误?谢谢。

点赞
用户107090
用户107090

0 < x < 128 等价于 (0 < x) < 128),因此会出现错误提示。

将测试写作 0 < x and x < 128

2015-04-15 09:45:08
用户2114258
用户2114258

在Python中编写0<x<128是可以的,但在Lua中不行。

因此,当你的代码执行时,Lua将首先计算0<x是否为true。如果是真的,那么比较就变成了true<128,这显然是错误信息的原因。

要使它工作,你必须这样写:

if x < 128 and x > 0 then
  --do something
end
2015-04-15 10:37:22