![](/img/trans.png)
[英]Most pythonic way to write a function to either pass in arguments or a tuple of arguments
[英]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.