示例
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
但这不是事实;它仅返回函数返回的第一个值。
我如何才能做到这一点?对不起,格式化错误;这是我第一次问一个问题。
此外,我很确定该表等于一个数组?也为此感到抱歉。
编辑我也不知道参数的数量。
答案 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