lua中“#”意思是什么?

 我来答
花花140503
高粉答主

推荐于2019-09-08 · 醉心答题,欢迎关注
知道小有建树答主
回答量:278
采纳率:100%
帮助的人:8.6万
展开全部

一般来说是获得一个table的长度(即元素数),但这个操作符实际上陷阱很多

#的实际作用是获得一个table中最大的数字键值,比如:

t = {"a", "b", "c", "d"}

#t --输出是4

而tags[#tags+1]=tag就是一个常见的用法,在tags这个table的末端插入一个新元素tag

但由于上面说的,#仅对键值连续的数值键值有效,因此

1、当键值为字符串等其他类型时,该操作符返回的值无法确认,比如

t = { x = "a", y = "b", z = "c"}

#t --输出是0

2、当键值为数值但不连续时,比如:

t = {"a", "b", "c"}

#t  -- 同第一个范例,此时正常为3

t[5] = "e"

#t --此时输出依然为3,因为t[4]为nil,计数到3处停止。

综上,如果你的table是纯粹当一个连续的数组在用,那么#t是很方便的获得table长度的方法;但如果你的table中key的数值不连续,或者有其他类型的key那么还是不要指望#能给出多有意义的结果来。

百度网友fe016f1
2018-02-15 · TA获得超过802个赞
知道小有建树答主
回答量:467
采纳率:77%
帮助的人:304万
展开全部
一般来说是获得一个table的长度(即元素数),但这个操作符实际上陷阱很多
#的实际作用是获得一个table中最大的数字键值,比如:
t = {"a", "b", "c", "d"}
#t --输出是4
而tags[#tags+1]=tag就是一个常见的用法,在tags这个table的末端插入一个新元素tag
但由于上面说的,#仅对键值连续的数值键值有效,因此
1、当键值为字符串等其他类型时,该操作符返回的值无法确认,比如
t = { x = "a", y = "b", z = "c"}
#t --输出是0
2、当键值为数值但不连续时,比如:
t = {"a", "b", "c"}
#t -- 同第一个范例,此时正常为3
t[5] = "e"
#t --此时输出依然为3,因为t[4]为nil,计数到3处停止

综上,如果你的table是纯粹当一个连续的数组在用,那么#t是很方便的获得table长度的方法;但如果你的table中key的数值不连续,或者有其他类型的key那么还是不要指望#能给出多有意义的结果来……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式