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

在 Python 中,可以执行以下操作并访问所需的函数输出:

getNthOutput = myFunc(args)[0] #将为您获得 Python 中多输出函数的第一个输出

如何在 Lua 中执行相同的操作?下面是我的尝试,但它给我返回了一个错误:

getNthOutput = myFunc(args)[1] --获取 Lua 中多输出函数的第一个输出
点赞
用户21945
用户21945

如果你只想得到第一个返回值(就像你的例子一样),可以这样做:

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
2016-04-06 00:19:59
用户2858170
用户2858170

因为多个返回值没有作为表返回,所以你会遇到错误。因此,你无法使用[]访问任何表成员。

较新版本的Lua提供了一个函数,可以安全地将返回值放入一个表中,以便稍后使用索引来访问它们。

local retVals = table.pack(foo())
local firstValue = retVals[1]

或者更简单的,

table.pack(foo())[1]

在旧版本的Lua中,没有table.pack函数,但你可以使用变长参数函数自己实现一个。

function myPack(...)
  return {...} -- 仅适用于Lua 5.1及以上版本
end

我不指望你会使用低于5.1版本的Lua。但如果你确实要用,请注意变长参数函数的用法。请参阅相应的Lua参考手册中的函数定义章节。

2016-04-06 08:20:56