如何从函数返回 x 个参数?

问题描述 投票:0回答:2

我目前正在制作一个函数来包装另一个函数的返回值。我处理了前几个参数,但之后,我想存储以下所有参数。 (争论的数量可能会有所不同)

        local _, _, from, _, _, ... = computer.pullSignal("modem_message")
        return table.unpack(arg)

但是,我不知道如何存储以下所有参数。 使用 ... 还不是一个选项,因为它需要一个名字。

我尝试使用 ...(在要处理的参数之后)存储前面参数之后的所有参数,然后使用

table.unpack(args)
返回由 ... 存储的所有参数,但是,我收到了错误 “预计在‘...’附近” 我不知道如何为...定义名称

lua arguments
2个回答
3
投票

你的伪代码

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

0
投票
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"))
© www.soinside.com 2019 - 2024. All rights reserved.