2012-03-28 59 views
0

我创建了一个表的复杂表并使用一个变量作为索引。出于某种原因,我的代码很麻烦。字符串和整数之间的Lua表索引问题

原来,我不得不指数转换为字符串

所以

myTable[index] 

成为

myTable[tostring(index)] 

其他

需要

有时候指数将作为一个字符串和其他时候它会作为一个整数(我从来没有将索引转换为字符串中的一个y虽然指向了代码。

这造成了问题,因为myTable[1]myTable["1"]将被创建,并且两者会有所不同(我正在循环k/v对,因此myTable[1]不会显示)。

这是非常奇怪的行为,但我猜是预料?有没有什么办法可以基于一个总是使用字符串索引的表创建一个新类型,这样可以避免这种绑架问题?

回答

6

Lua会根据字符串和数字的使用环境(请参阅manualwiki page)自动在字符串和数字之间进行强制转换。

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

为了确保index保持一个数,使用tonumber()任何处理后或从文件中读取 - index = tonumber(index)。在Lua表中看来,1"1"是不同的键。

相关问题