外部api调用返回一对值:
('status', 'standby')
我认为可以进行如下任务:
theQuery, theResponse = returnVal
这样我想要的值(第二个)最终会出现在响应中,但这看起来并没有起作用。
我真正想要测试的是theResponse ='standby'
if theResponse=='standby' then …
答案 0 :(得分:2)
您可以使用unpack():
theQuery, theResponse = unpack(returnVal)
或者,您可以“手动”
进行操作theQuery = returnVal[1]
theResponse = returnVal[2]
或者更改您的支票
if returnVal[2]=='standby' then …
如果您的returnVal
是包含2个值的表格,则Lua中没有自动解包,您不能简单地执行theQuery, theResponse = returnVal
但与此相关的是,在Lua中,您可以使用一个返回多个值的函数,并且可以通过自动解压缩其返回值,例如。
function myfunc()
return 1,2
end
如果您执行a, b = myfunc()
,则会为a
分配1并为b
分配2
如果您这样做a = myfunc()
a
将被分配1和2将被丢弃。
请注意,这与做:
不同function myotherfunc()
return {1,2}
end
这里myotherfunc
返回一个值,这是一个包含2个值的表。
如果您现在a, b = myfunc()
,a
将被分配到表格{1,2},b
将被nil
分配。struct Cell
{
Int rowId;
Int colId;
}
int matData[MAX_ROWS][MAX_COLS];
int GetCellInMatrix(const Cell& cellIndex)
{
Cell newCellIndex = cellIndex + m_matrixOffset ;
while (newCellIndex.rowId > MAX_ROWS)
{
newCellIndex.rowId -= MAX_ROWS;
}
while (newCellIndex.colId > MX_COLS)
{
newCellIndex.y -= MAX_COLS;
}
return data[newCellIndex.rowId][newCellIndex.colId];
}
没有解压缩返回的表。