请问一个 lua 的问题

2015-08-25 10:53:51 +08:00
 iambic
t = {1,nil,nil,2}
print (#t )

t = {1,2,nil,nil}
print (#t )

t = {nil,nil,1,2}
print (#t )

t = {1,nil,2,nil}
print (#t )

输出结果是

4
2
4
1

我对 nil 的理解是, table 里边,只要出现 nil ,后边的就不会在计入长度了,之前的 key ,如果没有显示指定,默认从 1 开始,从而上边四个输出应该是 1,2,0,1

不知道为什么结果和预期的不一样

2035 次点击
所在节点    问与答
5 条回复
closeid
2015-08-25 11:09:31 +08:00
mark 看结果。
whahuzhihao
2015-08-25 11:54:46 +08:00
貌似没什么规律可循。建议不要用#来获取 table 的长度哦,也不要设置元素为 nil 。还是自己写个 get_length 函数,循环获取长度吧。
http://www.tuicool.com/articles/Jbyy6n
clino
2015-08-25 12:08:01 +08:00
pil 记得有专门针对这个说过的 去找找
34D
2015-08-25 12:15:22 +08:00
不要设置元素为 nil ,如果已定要设置,要自己设置长度。
iambic
2015-08-25 12:34:31 +08:00
@whahuzhihao 很有用,多谢了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/215780

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX