小于0的数字

如果 counterFlag[name] 小于 0,则将计数器设置为 0。

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

end

我应该怎么做?

我遇到了 “意外符号” 错误。

点赞
用户1009479
用户1009479

像这样简单:

如果 counterFlag[name] < 0 则
    counterFlag[name] = 0
end

或者在这种情况下使用 <= 作为小于等于,效果相同。

2014-01-30 17:43:51
用户2226988
用户2226988

也许你实际上想要将计数器设置为0,如果它不是大于0的数字。

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

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

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

有效的false意味着具有值nilfalse。有效的true则相反。

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


另外,通常使用以下Lua惯用语来初始化可能是nil的变量:

counterFlag[name] = counterFlag[name] or 0

您可以将此代码放在使用counterFlag[name]的代码之前,这样它不必检查nil。并且,由于您预计没有分配任何其他非数字值,因此代码可以使用需要数字值的运算符而不必检查其值。


请参见Programming in Lua

2014-01-31 02:56:40