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

2024-09-27 00:14:48 发布

您现在位置:Python中文网/ 问答频道 /正文

在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

Tags: ofthe函数inyououtputgetargs
2条回答

如果您只需要第一个返回值(根据您的示例),可以执行以下操作:

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

由于多个返回值未作为表返回,因此会出现错误。因此,不能使用[]访问任何表成员。你知道吗

较新的Lua版本提供了一个函数,可以将返回值安全地放入表中,以便以后使用索引。你知道吗

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

或者只是

table.pack(foo())[1]

在旧的Lua版本中没有函数表.pack,但您可以使用vararg函数自己实现一个

function myPack(...)
  return {...}   this only works since Lua 5.1
end

我不希望你使用5.1以上的版本。但是请注意vararg函数的工作方式不同。有关函数定义,请参见相应的Lua参考

相关问题 更多 >

    热门问题