我目前正在制作一个函数来包装另一个函数的返回值。我处理了前几个参数,但之后,我想存储以下所有参数。 (争论的数量可能会有所不同)
local _, _, from, _, _, ... = computer.pullSignal("modem_message")
return table.unpack(arg)
但是,我不知道如何存储以下所有参数。 使用 ... 还不是一个选项,因为它需要一个名字。
我尝试使用 ...(在要处理的参数之后)存储前面参数之后的所有参数,然后使用
table.unpack(args)
返回由 ... 存储的所有参数,但是,我收到了错误
“预计在‘...’附近”
我不知道如何为...定义名称
你的伪代码
local _, _, from, _, _, ... = computer.pullSignal("modem_message")
do_something_with(from)
return table.unpack(arg)
可以实现为
return eat_head_and_return_tail(computer.pullSignal("modem_message"))
如果您定义了以下辅助函数:
local function eat_head_and_return_tail(_, _, from, _, _, ...)
do_something_with(from)
return ...
end
local result = {computer.pullSignal("modem_message")}
将返回值打包到一个表中,然后可以通过索引号访问该表,或者,如果 pullSignal() 是您的函数,则只需返回一个具有命名属性的表:
function computer.pullSignal(str)
return {val1 = "some", val2 = "number", val3 = "done"}
end
然后选择你想要传递给下一个函数的那个,或者,你传递返回值的任何函数都知道要使用哪些成员:
function analyzeReturn(returnTbl)
local a,b,c = returnTbl.val1,returnTbl.val2,returnTbl.val3
doSomething(a,b,c)
end
analyzeReturn(computer.pullSignal("modem_message"))