lua中 table.getn(t) 、#t、 table.maxn(t) 这三个什么区别?求高人指导.RTlocal t = {1,888,x= 999,b=2,5,nil,6,7,[10]=1,8,{z = 1,y = 1},nil,nil}print(table.getn(t))print(#t)print(table.maxn(t))输出:8 8 8------------如果把[10] =1 改
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/01 14:03:54
![lua中 table.getn(t) 、#t、 table.maxn(t) 这三个什么区别?求高人指导.RTlocal t = {1,888,x= 999,b=2,5,nil,6,7,[10]=1,8,{z = 1,y = 1},nil,nil}print(table.getn(t))print(#t)print(table.maxn(t))输出:8 8 8------------如果把[10] =1 改](/uploads/image/z/13747928-32-8.jpg?t=lua%E4%B8%AD+table.getn%28t%29+%E3%80%81%23t%E3%80%81+table.maxn%28t%29+%E8%BF%99%E4%B8%89%E4%B8%AA%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB%3F%E6%B1%82%E9%AB%98%E4%BA%BA%E6%8C%87%E5%AF%BC.RTlocal+t+%3D+%7B1%2C888%2Cx%3D+999%2Cb%3D2%2C5%2Cnil%2C6%2C7%2C%5B10%5D%3D1%2C8%2C%7Bz+%3D+1%2Cy+%3D+1%7D%2Cnil%2Cnil%7Dprint%28table.getn%28t%29%29print%28%23t%29print%28table.maxn%28t%29%29%E8%BE%93%E5%87%BA%EF%BC%9A8+8+8------------%E5%A6%82%E6%9E%9C%E6%8A%8A%5B10%5D+%3D1+%E6%94%B9)
lua中 table.getn(t) 、#t、 table.maxn(t) 这三个什么区别?求高人指导.RTlocal t = {1,888,x= 999,b=2,5,nil,6,7,[10]=1,8,{z = 1,y = 1},nil,nil}print(table.getn(t))print(#t)print(table.maxn(t))输出:8 8 8------------如果把[10] =1 改
lua中 table.getn(t) 、#t、 table.maxn(t) 这三个什么区别?求高人指导.
RT
local t = {1,888,x= 999,b=2,5,nil,6,7,[10]=1,8,{z = 1,y = 1},nil,nil}
print(table.getn(t))
print(#t)
print(table.maxn(t))
输出:8 8 8
------------如果把[10] =1 改成[11] =1 那么输出8 8 11 这又是为什么?
lua中 table.getn(t) 、#t、 table.maxn(t) 这三个什么区别?求高人指导.RTlocal t = {1,888,x= 999,b=2,5,nil,6,7,[10]=1,8,{z = 1,y = 1},nil,nil}print(table.getn(t))print(#t)print(table.maxn(t))输出:8 8 8------------如果把[10] =1 改
==1==
table.getn(t)
等价于 #t
但是它计算的是数组元素.不包括hash 键值.
而且数组是以第一个nil元素来判断数组结束.
#只计算array的元素个数,它实际上调用了对象的metatable 的__len函数.
对于有__len 方法的函数返回函数返回值.不然就返回数组成员数目.
==2==
a={1,3,a='b',[6]='six',['10']='ten'}
a 和 [6] ['10']是作为hash保存的.#a => 2 他是不包括hash成员的计数.
1 3 是 数组结构保存的.table.maxn(a) => 6
因为a中所有元素最大的数值索引是6不是字符串10
.你的代码返回11 是因为它是最大的数值索引.
maxn lua 5.2 已经抛弃了,不过依然可以使用.