关于table的困惑 好神奇
lua吧
全部回复
仅看楼主
level 1
寒蟬鳴泣之時º
楼主
为什么
local t = {[1] ="aaa", [2] = "bbb", [4] = "xxx"}
print(#t)
输出是4
而
local t = {[1] ="aaa", [2] = "bbb", [5] = "xxx"}
print(#t)
输出是2???? 好神奇啊。。。使用菜鸟教程的lua工具进行测试的
2021年04月01日 14点04分
1
level 7
wzhengsen
对表取长度时,确保表的键是连续的,否则结果是不准确的。
或许你可以使用__len元方法来自定义#操作的行为。
2021年04月02日 08点04分
2
寒蟬鳴泣之時º
那我是不是可以这样理解,#对table取长度其实没有太大意义,如果不能保证索引连续的话,毕竟table太灵活了
2021年04月02日 08点04分
wzhengsen
@寒蟬鳴泣之時º
当你能保证表中键是连续的,那么#操作是有用的,并且这种情况并不少见。 比如,使用如local arg = {...}来打包不定参数,那么这个表的键一定是连续的。 再比如,从网络协议中将数据解析为数组,这个数组被encode为一个表,这个表也是可以保证连续的。
2021年04月02日 11点04分
level 1
贴吧用户_0eAA3UW
table子成员如果有nil或不是一组序列号,#就废了。获取table长度用遍历方法是最准确的。
2021年04月07日 23点04分
3
寒蟬鳴泣之時º
嗯嗯嗯,现在知道了
2021年04月12日 05点04分
level 1
迷茫滴东北小伙
加QQ378885008 一起学习lua语言 交流
2021年07月03日 16点07分
4
1