字符串和整数之间的Lua表索引问题

字符串和整数之间的Lua表索引问题,lua,Lua,我创建了一个复杂的表表,并使用一个变量作为索引。出于某种原因,我的代码有很多问题 事实证明,我必须将索引转换为字符串 所以 需要成为 myTable[tostring(index)] 否则 有时索引将充当字符串,而有时它将充当整数(尽管我从未在代码中的任何一点将索引转换为字符串) 这导致了问题,因为将创建myTable[1]和myTable[“1”],并且两者都不同(我在k/v对上循环,因此myTable[1]不会显示) 这是一个非常奇怪的行为,但我想这是意料之中的?有没有办法基于始终使用字符

我创建了一个复杂的表表,并使用一个变量作为索引。出于某种原因,我的代码有很多问题

事实证明,我必须将索引转换为字符串

所以

需要成为

myTable[tostring(index)]
否则

有时索引将充当字符串,而有时它将充当整数(尽管我从未在代码中的任何一点将索引转换为字符串)

这导致了问题,因为将创建
myTable[1]
myTable[“1”]
,并且两者都不同(我在k/v对上循环,因此
myTable[1]
不会显示)


这是一个非常奇怪的行为,但我想这是意料之中的?有没有办法基于始终使用字符串索引的表创建一个新类型,这样就可以避免这种情况?

Lua根据使用字符串和数字的上下文,自动在字符串和数字之间进行强制(请参见和)

似乎在这个过程中的某个地方,您要么从文件中读取索引,要么使用字符串串联运算符
,然后它就变成了一个字符串。在我看来,您似乎只想使用数字索引


要确保
index
保留一个数字,请在处理或读取文件后使用
tonumber()
-
index=tonumber(index)
。在Lua表的视图中,
1
“1”
是不同的键。

Lua会根据使用字符串和数字的上下文自动在字符串和数字之间强制(请参见和)

似乎在这个过程中的某个地方,您要么从文件中读取索引,要么使用字符串串联运算符
,然后它就变成了一个字符串。在我看来,您似乎只想使用数字索引

要确保
index
保留一个数字,请在对文件进行任何处理或读取后使用
tonumber()
-
index=tonumber(index)
。在Lua表的视图中,
1
“1”
是不同的键

myTable[tostring(index)]