我试图从相当大的表(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点对角地获取二维数组的值"向下。
答案 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
这解决了这个问题,因为检查了所有可能性(a
或b
不能nil
,您尝试访问的表甚至存在且包含您尝试的值访问)。您只检查了最后一个,因此当值为nil
时出现错误。