在lua中计算字符串索引表

时间:2015-01-16 11:37:59

标签: arrays indexing lua

我正在尝试计算表中的元素,这些元素包含一些用字符串索引的元素。当我尝试使用#运算符时,它只会忽略字符串索引的运算符。例如:

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,这是正确的,因为我在某处找到#操作符在找到零值时停止(但为什么第一次打印打印7?)

最后,我试过

local myT = {123,456,789}
myT["test"] = 10
print(#myT)

打印3,而不是4

为什么?

1 个答案:

答案 0 :(得分:2)

规则很简单,来自the length operator

  

除非给出__len元方法,否则仅在表是序列时定义表t的长度,即,其正数字键的集合等于{{1对于一些非负整数{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