如何从除了nil之外的Lua表中获取数据

时间:2018-01-08 09:00:53

标签: debugging lua lua-table

我试图从相当大的表(bigTable)接收数据,而getRow函数应该重新排列一些数据以便更快地计算(下面的具体信息)。问题是某些价值观不存在( - >是nil)。我想我已经通过添加if-Statement来处理这个问题,首先检查该值是否存在,但我仍然得到以下错误。谢谢你的帮助。

我的功能(来自第46行):

function getRow(a, b)
    row = {}
    for d = 0, 3 do
        if (bigTable[a + d][b + d]) then
            table.insert(row, bigTable[a + d][b + d])
        end
    end
    return row
end

错误:

C:\Program Files (x86)\Lua\5.1\lua.exe: .\solution_11.lua:49: attempt to index field '?' (a nil value)
stack traceback:
        .\solution_11.lua:49: in function 'getRow'
        .\solution_11.lua:69: in function 'diagonal'
        .\solution_11.lua:89: in main chunk
        [C]: ?
  

getRow() - 函数应该从A,B和#34点对角地获取二维数组的值"向下。

1 个答案:

答案 0 :(得分:1)

可以通过交换此行来实现目标

if (bigTable[a + d][b + d]) then

这一行

if a and b and type(bigTable[a + d])=='table' and bigTable[a + d][b + d] then

这解决了这个问题,因为检查了所有可能性(ab不能nil,您尝试访问的表甚至存在且包含您尝试的值访问)。您只检查了最后一个,因此当值为nil时出现错误。