我是Lua的新手,并试图在我的代码中完成这种类型的操作,但它不起作用.这里的语法和all都是绝对正确的,但是elseif条件是为了折腾,并且条件检查是错误的.
所以对于这个我得到的输出是:值= 40或42,这是错误的
我使用的Lua版本是5.2
function call(a)
print (a)
if a == 40 or 42 then
print ("Value = 40 or 42")
elseif a == 43 or 45 then
print ("Value = 43 or 45")
elseif a == 46 or 47 then
print ("Value = 46 or 47")
end
end
a = 47
call(a)
Run Code Online (Sandbox Code Playgroud)
Mud*_*Mud 12
if a == 40 or 42 then
Run Code Online (Sandbox Code Playgroud)
您希望a与40 和 42 进行比较,但==不会那样.它是一个二元运算符,它只比较两个项目,只有两个项目,所以Lua看到你的代码如下:
if (a == 40) or (42) then
Run Code Online (Sandbox Code Playgroud)
在Lua中,任何没有nil或false评估为真的东西,42在这个表达式中也是如此.所以你真正写的是:
if (a == 40) or true then
Run Code Online (Sandbox Code Playgroud)
这与以下相同:
if true then
Run Code Online (Sandbox Code Playgroud)
所有比较运算符都是二进制的(即两个且只有两个操作数),因此您需要比较a多个事物,您需要使用多个比较运算符:
if (a == 40) or (a == 42) then
Run Code Online (Sandbox Code Playgroud)