先看两段代码
有人多人都说#是取表的长度,遇到nil就停止了,但是从这里发现,其实并不是这样的。
高人指导说其实#的底层是一个二分查找,因为一个alimit的字段,产生了两种不同的算法,
导致这两个表的长度取的都不一样。
而table.insert插入的默认位置是#tab+1的位置,这也就是为什么这上面两种表的长度和插入位置不同的原因。
原创文章,作者:dweifng,如若转载,请注明出处:https://blog.ytso.com/268124.html
先看两段代码
有人多人都说#是取表的长度,遇到nil就停止了,但是从这里发现,其实并不是这样的。
高人指导说其实#的底层是一个二分查找,因为一个alimit的字段,产生了两种不同的算法,
导致这两个表的长度取的都不一样。
而table.insert插入的默认位置是#tab+1的位置,这也就是为什么这上面两种表的长度和插入位置不同的原因。
原创文章,作者:dweifng,如若转载,请注明出处:https://blog.ytso.com/268124.html