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/12/01 00:45:55
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 改
xSNA~I@bwƘ!)m5&((?VPQ@ әWnv3s79;g|荂:R@(( !Յ~V*zye6[]vMNR/Zuf%NL^TBHE2Z+,h||\naLυ\Fe o) Kb[D@^.ns~g/;uE}kϋ}5Z-LDhmډI7dҢ{Pv JcMmNIAHRx5q G|dYed/ ? jp{4$84;^4Y"ޓ:}WUfQ7 ސY,ab &ˏ I:;QhTY9FՌX !@烪b`33 I 85FZNDo `cNk( 4Ize6"[bO^ 0*(3<ӲsanVNi 5vˣ ).2IqBEHNt(H#7ƶ=}<RBQj⑭o#piJ M@^1ru1ϤUnd棾cNv%$"nG* $:6EOqYVn)݈\FfJ $]# ;~7Q~vuck

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 已经抛弃了,不过依然可以使用.