从unpack到lua版本的坑

来源:互联网 发布:淘宝哪买psv好 编辑:程序博客网 时间:2024/05/21 22:21

最近要实现一个可变参数的函数,使用到了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 thenarg = { ... }endif unpack ~= nil then -- 5.1及之前的版本print(unpack(arg))else -- 之后的版本local arg = { ... }print(table.unpack(arg))endend


其他

其他修改参考:

http://blog.codingnow.com/2015/01/lua_53_update.html


另外,cocos2dx 使用的lua版本,可以在lua.h头文件里查看:

#define LUA_VERSION"Lua 5.1"#define LUA_RELEASE"Lua 5.1.5"#define LUA_VERSION_NUM501#define LUA_COPYRIGHT"Copyright (C) 1994-2012 Lua.org, PUC-Rio"#define LUA_AUTHORS "R. Ierusalimschy, L. H. de Figueiredo & W. Celes"




0 0
原创粉丝点击