簡體   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