[lua] cannot use ‘...‘

[lua] cannot use ‘…’

使用可变长参数,遇到如下

cannot use '...' outside a vararg function near '...'

出现问题示例:

local testFn = function(cb)
   cb() 
end

local testFn2 = function(cb, ...)
   testFn(function()
        cb(...)
    end) 
end

引发错误原因:不可以在一个可变长参数函数的外部使用…,因为 … 是匿名的,lua5.1以后不再为vararg自动创建一个表,需要我们手动创建表:

local testFn = function(cb)
   cb() 
end

local testFn2 = function(cb, ...)
    local args = {...}
   	testFn(function()
        cb(unpack(args))
    end) 
end