調(diào)用回調(diào)函數(shù),并把一個數(shù)組參數(shù)作為回調(diào)函數(shù)的參數(shù)。
local args = {...} or {}
method_name(unpack(args, 1, table.maxn(args)))
如果你的實參 table 中確定沒有 nil 空洞,則可以簡化為
method_name(unpack(args))
偽代碼
add_task(end_time, callback, params)
if os.time() >= endTime then
callback(unpack(params, 1, table.maxn(params)))
end
值得一提的是,unpack
內(nèi)建函數(shù)還不能為 LuaJIT 所 JIT 編譯,因此這種用法總是會被解釋執(zhí)行。對性能敏感的代碼路徑應(yīng)避免這種用法。
local function run(x, y)
print('run', x, y)
end
local function attack(targetId)
print('targetId', targetId)
end
local function do_action(method, ...)
local args = {...} or {}
method(unpack(args, 1, table.maxn(args)))
end
do_action(run, 1, 2) -- output: run 1 2
do_action(attack, 1111) -- output: targetId 1111