如何从 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
这解决了问题,因为检查了所有可能性(a
或 b
不能是 nil
,您尝试访问的 table 甚至存在并且它包含您尝试访问的值)。您只检查了最后一个,因此当值为 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
这解决了问题,因为检查了所有可能性(a
或 b
不能是 nil
,您尝试访问的 table 甚至存在并且它包含您尝试访问的值)。您只检查了最后一个,因此当值为 nil
.