繁体   English   中英

从返回的对中提取单个值

[英]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}和bnil 没有解包返回的表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM