如何在Lua中直接访问具有多个输出的函数的第n个输出

时间:2016-04-05 23:54:52

标签: python function lua return-value

在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

2 个答案:

答案 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参考