[英]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.