首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lua的表长操作符是如何工作的?

Lua的表长操作符是如何工作的?
EN

Stack Overflow用户
提问于 2016-04-25 17:58:00
回答 1查看 1.8K关注 0票数 3

有人能解释这种明显的精神错乱吗?

代码语言:javascript
复制
> t = {1, 2, 3} -- Table length 3. Simple
> = #t
3  -- Yep

> t[3] = nil -- Remove the last element?
> = #t
2 -- Ok it realises it is the last one (since #t = 3) and decrements the length

> t[6] = 6 -- Add a separate element?
> = #t
2 -- Ok... I guess? Although surely it knew #t = 2, and so now #t should be 6?

> t[4] = 4 -- Add another separate element
> = #t
4 -- Errr... what.

> t[5] = 5 -- Append another element
> = #t
6 -- Ok now it remembers element 6? Wtf?

好吧让我再试一次..。

代码语言:javascript
复制
> t = {1, 2, 3}
> = #t
3
> t[10] = 10
> = #t
3
> t[4] = 4
> = #t
4
> t[9] = 9
> = #t
4
> t[8] = 8
> = #t
10

什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-25 18:08:18

只有当表是正确的序列(连续整数键)时,才定义表的长度。

Lua manual解释了长度运算符:

除非给出一个__len元方法,否则表t的长度只有在表是序列时才定义,即对于某个非负整数n,它的正数值键集等于{1.n},在这种情况下,n是它的长度。注意,像这样的表 {10、20、0、40} 不是序列,因为它有键4,但没有键3。(因此,没有n个这样的集合{1.n}等于该表的正数字键集。)但是,请注意,非数字键不会干扰表是否是序列.

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36847797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档