如何将多个值返回到表中?没有返回表[lua]

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

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

但这种情况并非如此;它只返回函数返回的第一个值。

我怎样才能做到这一点?抱歉格式不正确;这是我第一次提问。

另外,我很确定该表等于数组?对此也很抱歉。

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

lua
1个回答
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 
© www.soinside.com 2019 - 2024. All rights reserved.