如何从 Lua table 中获取数据,除了 nil

How to get data from a Lua table except nil

我正在尝试从相当大的 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.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]: ?

The getRow()-function should get the values of the two dimensional array from point A, B "diagonally" downwards.

交换这条线就可以达到目的

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,您尝试访问的 table 甚至存在并且它包含您尝试访问的值)。您只检查了最后一个,因此当值为 nil.

时出现错误