3个回答
展开全部
一般来说是获得一个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那么还是不要指望#能给出多有意义的结果来……
#的实际作用是获得一个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那么还是不要指望#能给出多有意义的结果来……
展开全部
一般来说是获得一个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那么还是不要指望#能给出多有意义的结果来。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1 不可以
2 作用域不同, 局部变量只在局部内有效, 全局在整个区域都有效。 局部变量用 local 标识。
t = {}
if t > 5 then -- 错误不能比较
m = 10 -- if 完了以后 m的值还在
local n = 12 -- if 结束以后就没有n了,n = nil
end
3。计数器的实现可以借助闭包, 很复杂,参考一下其他资料吧。
function counter()
local count = 0
return function() count = count + 1 return count end
end
-- 这里使用计数器了。
f = counter()
print (f()) -- 1
print (f()) -- 2
print (f()) -- 3
print (f()) -- 4
2 作用域不同, 局部变量只在局部内有效, 全局在整个区域都有效。 局部变量用 local 标识。
t = {}
if t > 5 then -- 错误不能比较
m = 10 -- if 完了以后 m的值还在
local n = 12 -- if 结束以后就没有n了,n = nil
end
3。计数器的实现可以借助闭包, 很复杂,参考一下其他资料吧。
function counter()
local count = 0
return function() count = count + 1 return count end
end
-- 这里使用计数器了。
f = counter()
print (f()) -- 1
print (f()) -- 2
print (f()) -- 3
print (f()) -- 4
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询