2014-02-27 18 views
3
不同

我学习的Lua电晕SDK和我有这些为什么长在Lua

local type1 = {nil, "(", nil, "x" ,nil , ")" ; n=6} 
local type2 = {"(",nil, "x",nil, ")",nil ; n=6} 
print(#type1) --prints 6 
print(#type2) --prints 3 

为什么第二个是不是太6

回答

4

#运算符不适用于每个表,它仅适用于一个序列,也就是说,其正数字键集合等于{1..n},对于某个整数n。在这种情况下,n是它的长度。例如,local t = {"hello", 42, true}是一个序列。

但是这两个表都不是序列,因为它们有nil的“漏洞”。

请参阅Lua 5.2 Reference Manual: The length operator

+0

我试着用table.getn()仍然打印相同,所以我怎么才能正确计数一个数组? – Kossel

+0

@Kossel你的意思是你想要得到的值的数量,包括你初始化为'nil'的值?你不能,因为某个键的'nil'值相当于在该键上没有任何值。 –

+1

换句话说:给一个值赋'nil'基本上和删除那个值的条目是一样的。 – Amber