[英]Extracting single value from returned pair
外部api调用返回一对值:
('status', 'standby')
我认为可以做这样的作业:
theQuery, theResponse = returnVal
这样我想要的值(第二个)最终出现在theResponse中,但这似乎不起作用。
我真正要测试的是theResponse ='standby'
if theResponse=='standby' then …
您可以使用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
。 没有解包返回的表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.