为什么 Lua 中的长度会不同

我正在学习用于 Corona SDK 的 Lua,我有以下内容:

local type1 = {nil, "(", nil, "x" ,nil , ")" ; n=6}
local type2 = {"(",nil, "x",nil, ")",nil ; n=6}
print(#type1)   --打印 6
print(#type2)   --为什么不是 6 呢??

为什么第二个不是 6 呢?

点赞
用户1009479
用户1009479

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

但是你的两个表都不是序列,因为它们有 nil 的 "空位"。

请参阅 Lua 5.2 参考手册:长度运算符

2014-02-27 05:03:23