如何将多个值返回到表中?不返回表[lua]
示例如何将多个值返回到表中?不返回表[lua],lua,Lua,示例 function func1() return 1,1,1,1 end table = {} table = func1() print(table) 我不想这样做 function func1() return {1,1,1,1} end 因为我使用的函数已经定义,我无法修改它 所需输出为 1 但事实并非如此;它只返回函数返回的第一个值 我怎样才能做到这一点?对不起,格式不好;这是我第一次问问题 另外,我很确定这个表等于一个数组?也很抱歉 编辑我也不知道参数的数量。返回
function func1()
return 1,1,1,1
end
table = {}
table = func1()
print(table)
我不想这样做
function func1()
return {1,1,1,1}
end
因为我使用的函数已经定义,我无法修改它
所需输出为
1
但事实并非如此;它只返回函数返回的第一个值
我怎样才能做到这一点?对不起,格式不好;这是我第一次问问题
另外,我很确定这个表等于一个数组?也很抱歉
编辑我也不知道参数的数量。返回多个结果的函数将分别返回它们,而不是作为表返回 基于多个结果的Lua资源: 您可以这样做:
t = {func1()} -- wrapping the output of the function into a table
print(t[1], t[2], t[3], t[4])
此方法将始终获取所有输出值
此方法也可以使用
表.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
我建议使用
t=table.pack(func1())
而不是t={func1()}
,因为这样你就可以用t.n
查询表中的元素数(#t
如果有“洞”就不起作用了)。@HenriMenke在答案中添加了table.pack
变体,我仍然觉得,如果您确实期望内部nil
值,那么这可能会是一个令人困惑的结果。在我的答案中添加的内容中,table.pack
无法保持结果。如果第二个结果是nil
,那么使用table.pack
您得到的表有一个t[2]
,它不是nil
,而是结果3的值,现在t[3]
是结果4的值。如果超过1个结果可以返回nil
,table.pack
将无法解释结果