如何在不返回表的情况下返回多个值并进入表?[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

但情况并非如此,它仅返回函数返回的第一个值。

我该如何使这成为可能?对于格式不好,对不起,这是我第一次提问。

此外,我相当确定该表等于一个数组?所以也对不起。

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

点赞
用户7396148
用户7396148

一个返回多个结果的函数会将它们分别返回,而不是作为一个表返回。

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

你可以像这样做:

t = {func1()} -- 将函数的输出包装到一个表中
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,你可以丢弃 nil 结果。这有助于使用长度运算符 # 保留结果数量的简单检查。但是,它的代价是不再保留结果的“顺序”。

为了进一步解释,如果 func1 返回 1, nil, 1, 1,那么第一种方法会得到一个 t 表,其中 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() -- 将函数的每个输出分配给一个变量

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

这种方法可以让你选择输出的位置,如果你想忽略一个输出,你可以简单地这样做:

 t[1], _, t[3], t[4] = func1() -- 跳过第二个值
2019-02-27 23:44:38