如何获得多个值返回到表?不返回表[lua]

时间:2019-02-27 23:39:55

标签: lua

示例

function func1()
 return 1,1,1,1
end

table = {}
table = func1()

print(table)

我不想做

 function func1()
  return {1,1,1,1}
 end

因为我正在使用的功能已经定义,我无法对其进行修改。

所需的输出是

1 1 1 1

但这不是事实;它仅返回函数返回的第一个值。

我如何才能做到这一点?对不起,格式化错误;这是我第一次问一个问题。

此外,我很确定该表等于一个数组?也为此感到抱歉。

编辑我也不知道参数的数量。

1 个答案:

答案 0 :(得分:2)

返回多个结果的函数将单独返回它们,而不是作为表。

  

关于多个结果的Lua资源:https://www.lua.org/pil/5.1.html

您可以这样做:

t = {func1()} -- wrapping the output of the function into a table
print(t[1], t[2], t[3], t[4])

此方法将始终获取所有输出值。


也可以使用table.pack完成此方法:

t = table.pack(func1())
print(t[1], t[2], t[3], t[4])

通过使用table.pack可以舍弃零结果。这有助于使用长度运算符#保留结果数量的简单检查;但是,这样做的代价是不再保留结果“订单”。

为进一步说明,如果第一种方法用func1返回了1, nil, 1, 1,则会收到一个表t[2] == nil。使用table.pack版本,您将获得t[2] == 1


或者,您可以执行以下操作:

function func1()
 return 1,1,1,1
end

t = {}
t[1], t[2], t[3], t[4] = func1() -- assigning each output of the function to a variable individually 

print(t[1], t[2], t[3], t[4])

此方法可以让您选择输出的位置,或者如果您想忽略输出,则可以简单地执行以下操作:

 t[1], _, t[3], t[4] = func1() -- skip the second value