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,我正在试验以下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 实现这一点的最佳方法是什么?如果不确定某个函数可能返回

我正在试验以下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 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
示例在操作中。一个比我能给出的更好的解释位于