我正在尝试查找test[0]
test = {}
test[0] = {}
test[0].x = {}
test[0].x[0] = 1
test[0].x[1] = 1
test[0].x[2] = 1
test[0].y = {}
test[0].y[0] = 1
我希望条目table.getn(test[0])
和test[0].x
的{{1}}为2,但结果为0.为什么会这样,我需要做些什么来获得我想要的内容为?
答案 0 :(得分:2)
请注意,Lua 5.0中的table.getn
已被#
运算符替换,因为Lua 5.1
表的大小仅对表的序列部分有效(即,使用从1
到某个数字n
的正数字键,并且n
是大小)
在此示例中,test[0]
只有两个kesy "x"
和"y"
。因此,其大小为0
。
答案 1 :(得分:1)
table.getn
和lua 5.1 length operator被定义为在"列表"或数组。你的桌子不是一个。它没有数字指数。
所以结果在lua 5.1中未定义(虽然它在这里为零)和lua 5.0中的0,因为大小被定义为one less the first integer index with a nil value
,它是整数索引1
。
另外值得注意的是,table.getn(test[0].x)
将返回2
而table.getn(test[0].y)
将返回0
(因为lua数组从1
开始)。