繁体   English   中英

如何将元组作为参数传递给Lua函数?

[英]How to pass a tuple as arguments to a Lua function?

有没有办法将元组作为Lua函数的参数传递?

例如,我有一个返回多个值的函数

function f(a,b)  return b,a end

并且我想重复应用此函数f ,所以我可以这样写:

f (f ... f(1,2))

但是,如果我需要将此初始元组(1,2)存储为变量init怎么办?

f (f ... f(init))

有支持吗?

根据这个答案 ,似乎python具有splat运算符*

Lua没有“元组”。

当一个函数返回多个值时,它将返回多个值 它们没有组合成某种数据结构。 它们是独立的值。 如果要在单个数据结构中存储多个返回值,则必须实际执行此操作。

Lua 5.2具有table.pack函数,可用于在表中存储多个返回值。 但是这样做的方式是您以后可以分解它们:

local values = table.pack(f(1, 2))

f(table.unpack(values, values.n))

Lua 5.1中存在unpack ,但pack不存在。 您可以很容易地模拟它:

function pack(...)
    return {n = select("#", ...), ...}
end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM