计算lua中的字符串索引表
Posted
技术标签:
【中文标题】计算lua中的字符串索引表【英文标题】:counting string-indexed tables in lua 【发布时间】:2015-03-15 00:12:25 【问题描述】:我正在尝试计算一个表中的元素,该表中的一些元素用字符串索引。当我尝试使用 # 运算符时,它只会忽略字符串索引的运算符。示例:
local myTab = 1,2,3
print(#myTab)
将返回 3
local myTab =
myTab["hello"] = 100
print(#myTab)
将返回 0 混合它们,我试过了
local myTab = 1,2,3,nil,5,nil,7
print(#myTab)
myTab["test"] = try
print(#myTab)
返回 7 然后 3,这是正确的,因为我在某处读到 # 运算符在找到 nil 值时停止(但为什么第一次打印打印 7?)
最后,我试过了
local myT = 123,456,789
myT["test"] = 10
print(#myT)
打印 3,而不是 4
为什么?
【问题讨论】:
为什么需要对表格中的元素进行计数?您要解决的实际问题是什么? “# 运算符在找到 nil 值时停止”不正确。 Reference Manual 解释得很好。 【参考方案1】:规则很简单,来自the length operator:
除非给出
__len
元方法,否则表t
的长度仅在表是序列时才定义,即其正数字键的集合等于1..n
对于某些非负整数n
。在这种情况下,n
是它的长度。
在你的例子中:
local myTab = 1,2,3,nil,5,nil,7
#mytab
未定义,因为myTab
不是一个序列,有或没有myTab["test"] = try
。
local myT = 123,456,789
myT
是一个序列,长度为3
,有无myT["test"] = 10
【讨论】:
谢谢,那么计算它们的正确方法是什么? @FedericoFallico:手动,通过迭代它们。以上是关于计算lua中的字符串索引表的主要内容,如果未能解决你的问题,请参考以下文章