今天在看代码,看到其中一段是
local function _RegisterTick(TickFun, Interval, TickCount, ...)
local argc = select("#", ...)
local tickFunction = nil
if argc > 0 then
local args = {...}
tickFunction = function()
TickFun(unpack(args, 1, argc))
end
else
tickFunction = TickFun
end
return RegisterTick_lua(tickFunction, Interval, TickCount)
end
当时比较好奇,TickFun这个为什么要用unpack,而不是直接用"..."可变参数的形式传入。
select("#", ...) 用来获取可变长度参数的长度
unpack(args, 1, argc)) 将table中的元素从index 1到argc拆开来返回,组成了可变参数
看的挺纳闷的。实验发现,不能用可变参数直接传入。
不多说,看这里http://lua-users.org/wiki/VarargTheSecondClassCitizen