在Python中,可以执行以下操作并访问所需的函数输出:
getNthOutput = myFunc(args)[0] #Will get you the first output of a multi-output function in Python
如何在Lua中做同样的事情?以下是我的尝试,它给了我一个错误:
getNthOutput = myFunc(args)[1] --Get me the first output of a multi-output function in Lua
答案 0 :(得分:3)
如果您只想要第一个返回值(根据您的示例),您可以这样做:
first = myFunc(args)
如果需要任意返回值,可以使用表构造函数:
function myFunc()
return 1, 2, 'a', 'b'
end
first = ({myFunc()})[1]
print(first)
# 1
n = 4
nth = ({myFunc()})[n]
print(nth)
# b
答案 1 :(得分:1)
您收到错误,因为多个返回值不作为表返回。因此,您无法使用[]
访问任何表成员。
较新的Lua版本提供了一个函数,可以安全地将返回值放在表中,以便以后使用索引。
local retVals = table.pack(foo())
local firstValue = retVals[1]
或只是
table.pack(foo())[1]
在较旧的Lua版本中没有函数table.pack,但您可以使用vararg函数自行实现一个
function myPack(...)
return {...} -- this only works since Lua 5.1
end
我不希望你使用超过5.1的东西。但请注意,vararg函数的工作方式不同。请参阅函数定义
中各自的Lua参考