我是Lua的新手,并试图在我的代码中完成这种类型的事情,但它不起作用。这里的语法和all是绝对正确的,但是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 ("Value = 43 or 45")
elseif a == 46 or 47 then
print ("Value = 46 or 47")
end
end
a = 47
call(a)
发布于 2012-06-20 16:58:33
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
发布于 2012-06-20 10:48:44
您错误地使用了关系运算符。or
有两个参数。与(a==42)相反,参数1是关系表达式(a==40),参数2只是数字42
你想做(a==40) or (a==42)
,但是发生的是(a==40) or (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)
编辑
抱歉的。Mud确实是指出这一点的right.Thanks。编辑了我的答案。
发布于 2013-01-13 17:01:46
‘'if 47 == 40 or 42’是一个三元语句。如果为47 == 40,则返回true;如果为false,则返回42。'true‘和'42’都不是false。
如果您希望在a等于40或42时返回true,则可以将其写为:
‘如果是== 40或== 42’
https://stackoverflow.com/questions/11117319
复制相似问题