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

时间:2012-03-28 12:38:48

标签: lua

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

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

所以

myTable[index] 

需要成为

myTable[tostring(index)]

否则

有时index会充当字符串,有时它会充当整数(我从未将代码转换为代码中任何一点的字符串。

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

这是非常奇怪的行为,但我猜是有望的?有没有办法根据一个总是使用字符串索引的表来创建一个新类型,这样可以避免这种类型的东西?

1 个答案:

答案 0 :(得分:6)

Lua会自动在字符串和数字之间强制执行,具体取决于使用它们的上下文(请参阅manual和此wiki page)。

似乎在某个地方,你从文件中读取索引,或者使用字符串连接运算符..,它就变成了一个字符串。对我来说,似乎你只想使用数字索引。

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