If statement Lua如果是的话!=(X或Y或Z)?
我有一个函数,它接受一个整数。但它不起作用,我怀疑if声明是无效的,我在谷歌上找不到关于这个问题的任何信息,也许我的谷歌搜索技能太差了If statement Lua如果是的话!=(X或Y或Z)?,if-statement,lua,If Statement,Lua,我有一个函数,它接受一个整数。但它不起作用,我怀疑if声明是无效的,我在谷歌上找不到关于这个问题的任何信息,也许我的谷歌搜索技能太差了 if mynumber != (0 or 1 or 2 or 3 or 4 or 5 or 6 or 7 or 8) then print("Please choose an integer number between 1-8") end 谢谢你的帮助 正确。这不是你测试那样东西的方式。不能以这种方式测试多个值
if mynumber != (0 or 1 or 2 or 3 or 4 or 5 or 6 or 7 or 8) then
print("Please choose an integer number between 1-8")
end
谢谢你的帮助 正确。这不是你测试那样东西的方式。不能以这种方式测试多个值
或
要求两边都有表达式,并计算为单个表达式。所以(0或1或2或3或4或5或6或7或8)
计算为0
,您的最终表达式就是if mynumber!=0然后
要测试这样的多个值,您需要在多个比较表达式周围使用或
如果(mynumber~=0)或(mynumber~=1)或(mynumber~=2)。。。然后
(还要注意,~=
是不相等运算符not!=
)
另外,请务必注意YuHao关于这一行逻辑的回答,以及如何正确测试这一点。尝试以下方法:
mynumber!=(0或1或…)
尝试类似于(mynumber~=0)或(mynumber~=1)…。
其他人指出了您存在的主要问题,即,
0或1或2或3或4或5或6或7或8
评估为0
,其余部分由于短路而被忽略。你需要用这些数字一个接一个地测试数字
然而,还有最后一个陷阱。状况
if mynumber ~= 0 or mynumber ~= 1 then
始终为真,因为数字不等于0
,在这种情况下mynumber~=0
为真;或者它等于0
,在这种情况下mynumber~=1
为真
正确的逻辑应该是:
if mynumber ~= 0 and mynumber ~= 1 then
Etan的回答解释了lua中观察到的行为。我建议编写一个自定义的
FindIn
函数来搜索:
function FindIn( tInput, Value )
for _ in pairs( tInput ) do
if Value == tInput[_] then return true end
end
return false
end
if FindIn( {1,2,3,4,5,6,7,8}, mynumber ) then
-- ...
end
你可以用……做得很简单。。。。(mynumber必须是整数变量)
如果我的号码是8,那么
打印(“请选择1-8之间的整数”)
结束
“0或1或2或3或4或5或6或7或8”返回0,如果a>=0,为什么不使用进行测试,并且在哈希上实现此函数比在数组/列表上实现此函数要快得多(如果在创建搜索表时多键入一点)。
if mynumber<0 or mynumber>8 then
print("Please choose an integer number between 1-8")
end