Lua 为什么';如果a==40或42';评估为';正确';何时';a';47岁吗?
我是Lua的新手,试图在我的代码中完成这种类型的工作,但它不起作用。这里的语法和所有内容都是绝对正确的,但是elseif条件将面临挑战,而条件检查将出错 对于这个,我得到的输出是:Value=40或42,这是错误的 我使用的Lua版本是5.2Lua 为什么';如果a==40或42';评估为';正确';何时';a';47岁吗?,lua,lua-5.2,Lua,Lua 5.2,我是Lua的新手,试图在我的代码中完成这种类型的工作,但它不起作用。这里的语法和所有内容都是绝对正确的,但是elseif条件将面临挑战,而条件检查将出错 对于这个,我得到的输出是:Value=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
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)
您错误地使用了关系运算符
或
接受两个参数。参数1是关系表达式(a==40),参数2只是数字42,而不是(a==42)
您想执行(a==40)或(a==42)
,但所发生的是(a==40)或(42)
因此,您的代码应该是:
function call(a)
print (a)
if a == 40 or a == 42 then
print ("Value = 40 or 42")
elseif a == 43 or a == 45 then
print ("Value = 43 or 45")
elseif a == 46 or a == 47 then
print ("Value = 46 or 47")
end
end
a = 47
call(a)
编辑
对不起。泥确实是对的。谢谢你指出这一点。
编辑了我的答案
if a == 40 or 42 then
您希望将a
与40和42进行比较,但=
不能这样工作。这是一个二进制运算符,它比较两个且仅比较两个项目,因此Lua看到的代码如下所示:
if (a == 40) or (42) then
在Lua中,任何非nil
或false
的值均为true,因此42
在此表达式中为true。所以你真正写的是:
if (a == 40) or true then
这与:
if true then
所有比较运算符都是二进制的(即两个且只有两个操作数),因此要将a
与多个对象进行比较,需要使用多个比较运算符:
if (a == 40) or (a == 42) then
'If47==40或42'是一个三元语句。如果47==40,则返回true;如果为false,则返回42。 “真”和“42”都不是假的 如果要在a等于40或42时返回true,可以将其写成:
'如果a==40或a==42'-1:Mud关于优先级是正确的@SatheeshJM-感谢您删除错误信息,但是您的回答现在除了Mud已经编写的内容之外,没有添加任何内容。