2014-01-30 50 views
1

我试着去柜台设置为0,如果counterFlag [名]小于0数小于0

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

end 

我怎么能这样做呢?

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

回答

2

像这样简单:

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

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

+0

现在我得到'尝试比较零和数字__lt'的错误。 – Gelu

+0

这意味着“名称”为零 – speeder

+1

@ user3142039检查'counterFlag [name]'的值,它的值现在是'nil',您不能将'nil'与一个数字进行比较。 –

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

相关问题