从unpack到lua版本的坑

在实现可变参数函数时遇到unpack为nil的错误,发现该问题与Lua版本有关。Lua 5.1之后,unpack变为table库的一部分,需要通过table.unpack进行调用。为了兼容,可以提供自定义函数来解决此问题。详细解决方案和参考资料已记录。
摘要由CSDN通过智能技术生成

最近要实现一个可变参数的函数,使用到了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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值