从lua中的函数返回多个值
我正在试验以下lua代码:从lua中的函数返回多个值,lua,Lua,我正在试验以下lua代码: function test() return 1, 2 end function test2() return test() end function test3() return test(), 3 end print(test()) -- prints 1 2 print(test2()) -- prints 1 2 print(test3()) -- prints 1 3 我希望test3返回1,2,3 实现这一点的最佳方法是什么?如果不确定某个函数可能返回
function test() return 1, 2 end
function test2() return test() end
function test3() return test(), 3 end
print(test()) -- prints 1 2
print(test2()) -- prints 1 2
print(test3()) -- prints 1 3
我希望test3返回1,2,3
实现这一点的最佳方法是什么?如果不确定某个函数可能返回多少值,可以这样做
...
function test3()
local var1, var2 = test()
return var1, var2, 3
end
print(test3())
function test() return 1, 2 end
function test2() return test() end
function test3()
local values = {test2()}
table.insert(values, 3)
return unpack(values)
end
print(test3())
这将产生:
1 2 3
我还发现,当函数调用位于列表末尾时,返回值不会被截断。若争论的顺序无关紧要,那个么这很有效
function test() return 1, 2 end
function test2() return test() end
function test3() return 3, test() end
print(test()) -- prints 1 2
print(test2()) -- prints 1 2
print(test3()) -- prints 3 1 2
阅读Lua中多个返回值的相关信息:此链接将带您进入Lua wiki页面,准确解释您的问题。Lua被编程为仅返回
test()
的第一个值,如果它与另一个值一起返回。在这种情况下,最好使用表。具有未知数量的返回值将很快变得非常烦人。如果使用表,只需在函数外部解包即可:print(table.unpack(testN())
,其中testN
返回一些未知数量的返回值,将打印所有的返回值!您不应该删除返回var1、var2、3处的end吗?它会产生语法错误如果我想return test()、test()怎么办
-我得到了12
。可能我需要用{}
捕捉每个“元组”,然后在这里连接*(而不是“合并”)它们。(*)-请看vs yes,返回测试(),测试()
只是一个稍微不同的变体。返回测试(),3
示例在操作中。一个比我能给出的更好的解释位于