Lua表格中字符串和整数的索引问题

我创建了一个包含一些表格的复杂表格,并将变量用作索引。由于某些原因,我的代码存在许多错误。

结果我必须将索引转换成字符串

所以,例如:

myTable[index]

必须变成

myTable[tostring(index)]

否则

有时索引会像字符串一样起作用,有时则会像整数一样起作用(但我从未在代码中将索引转换为字符串)。

这会导致问题,因为myTable[1]myTable["1"]都会被创建,但是它们是不同的(而且我正在循环遍历k/v对,所以myTable[1]不会显示)。

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

原文链接 https://stackoverflow.com/questions/9907659

点赞
stackoverflow用户221509
stackoverflow用户221509

Lua会根据使用的上下文自动在字符串和数字之间进行强制转换(请参阅手册和此维基页面)。

似乎在某个地方,您要么从文件中读取索引,要么使用字符串连接运算符..,使其成为字符串。对我来说,似乎您只想使用数字索引。

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

2012-03-28 13:15:32