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

fan*_*ard 5 lua

我遇到了一个错误:attempt to compare boolean with number使用以下代码:

local x = get_x_from_db() -- x maybe -2, -1 or integer like 12345
if 0 < x < 128 then
    -- do something
end
Run Code Online (Sandbox Code Playgroud)

是什么导致这个错误?谢谢.

tao*_*tao 7

写作0 < x < 128在Python中没问题,但在Lua中没有.

因此,在执行代码时,Lua中会首先计算,如果0 < x是true.如果是,则比较变为true < 128,这显然是错误消息的原因.

为了使它工作,你必须写:

if x < 128 and x > 0 then
  --do something
end
Run Code Online (Sandbox Code Playgroud)


lhf*_*lhf 4

0 < x < 128相当于(0 < x) < 128),因此会出现错误消息。

将测试编写为0 < x and x < 128.