Debugging 如何从Lua表(nil除外)中获取数据

Debugging 如何从Lua表(nil除外)中获取数据,debugging,lua,lua-table,Debugging,Lua,Lua Table,我正在尝试从一个相当大的表(bigTable)接收数据,getRow函数应该重新排列一些数据,以便更快地进行计算(具体信息如下)。问题是其中一些值不存在(->为nil)。我想我已经解决了这个问题,添加了if语句,以首先检查该值是否存在,但我仍然得到下面的错误。谢谢你的帮助 我的职能(来自第46行): 错误: C:\Program Files (x86)\Lua\5.1\lua.exe: .\solution_11.lua:49: attempt to index field '?' (a nil

我正在尝试从一个相当大的表(
bigTable
)接收数据,
getRow
函数应该重新排列一些数据,以便更快地进行计算(具体信息如下)。问题是其中一些值不存在(->为
nil
)。我想我已经解决了这个问题,添加了
if语句
,以首先检查该值是否存在,但我仍然得到下面的错误。谢谢你的帮助

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

错误:

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]: ?
函数应该从A点、B点“对角”向下获取二维数组的值


通过交换这条线路就可以达到这个目的

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

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

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

时出现了一个错误,请尝试
如果a和b和type(bigTable[a+d])=='table'和bigTable[a+d][b+d],那么
是的,这对我有效!非常感谢你。你想进一步解释这一尝试,并将其作为一个答案发布,以帮助我和其他人了解你所做的事情吗?