最近要实现一个可变参数的函数,使用到了unpack,写完代码测试的时候,提示出错了,unpack为nil。
于是网上搜了一圈,发现又是一个坑,跟lua版本有关。
在这里记录下,避免后面再踩。
unpack
lua 5.1及之前的版本中,unpack作为全局函数使用,可以直接
unpack(arg)
而 5.2之后,unpack被移了到table下面,于是直接unpack就会导致报错,新的调用应该为:
table.unpack(arg)
同时修改的还有另外一个:arg
以前 ... 可以在函数内直接使用arg来处理,但是5.1之后,就需要自己手动变换成arg了
需要这样做:
local arg = { ... }
print(arg[1])
提供一种兼容的方法:
function test( ... )
if arg ~= nil then
arg = { ... }
end
if unpack ~= nil then -- 5.1及之前的版本
prin