Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将多个值返回到表中?不返回表[lua]_Lua - Fatal编程技术网

如何将多个值返回到表中?不返回表[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
将无法解释结果