数字小于0

时间:2014-01-30 17:41:26

标签: lua

如果counterFlag [name]小于0,我试图将计数器设置为0.

if counterFlag[name] <== 0 then
counterFlag[name] = 0

end

我怎么能这样做?

我收到''意外符号'错误。

2 个答案:

答案 0 :(得分:2)

这很简单:

if counterFlag[name] < 0 then
    counterFlag[name] = 0
end

或者使用<=小于或等于,在这种情况下它具有相同的效果。

答案 1 :(得分:0)

如果它不是大于0的数字,也许你真的想将计数器设置为0.

counterFlag[name] = 
    type(counterFlag[name]="number") 
    and (counterFlag[name] > 0) 
    and counterFlag[name]
  or 0

and是一个运算符,它返回第一个有效的假操作数,否则返回它的最后一个操作数 or是一个运算符,它返回第一个有效的真实操作数,否则返回它的最后一个操作数。

有效错误表示值为nilfalse。 有效的真实意味着相反。

因此,第一部分有条件地保持相同的值,如果不满足条件,则第二部分给出0。


或者,Lua习惯用法通常用于初始化可能nil的变量:

counterFlag[name] = counterFlag[name] or 0

您可以在使用counterFlag[name]的代码之前放置它,这样就不必检查nil。并且,因为,大概你没有分配任何其他非数字值,代码可以使用需要数字值的运算符而不检查它。


请参阅Programming in Lua