免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1833 | 回复: 0

参考手册 - 7 - 与之前版本的不兼容 [复制链接]

论坛徽章:
0
发表于 2008-08-15 11:31 |显示全部楼层
7 - 与之前版本的不兼容
我们在这儿列出了当你将程序从Lua 5.0迁移到Lua 5.1时可能发现的不兼容。你能用时当的选项(见文件luaconf.h)编译Lua以避免大多数不兼容。然而,在下一版Lua中所有这些不兼容选项将被移除。
7.1 - 语言变化

  • 可变参数系统从含有附加参数的表的伪参数arg改为可变参数表达式。(见luaconf.h中的编译时选项LUA_COMPAT_VARARG。)

  • for语句的隐式变量的作用域方面以及对于repeat语句有细微的改动。

  • 长字符串/长注释语法([[string]])不允许嵌套。这些情况下课用新语法([=[string]=])。(见luaconf.h中的编译时选项LUA_COMPAT_LSTR。)

7.2 - 库的变化

  • 函数string.gfind重命名为
    string.gmatch
    。(见luaconf.h中的编译时选项LUA_COMPAT_GFIND。)


  • string.gsub
    以函数为其第三参数调用时,只要该函数返回nilfalse,则替换串是整个匹配而不是空串。

  • 不赞成使用函数table.setn。函数table.getn对应新的取长操作符(#);使用操作符代替函数。(见luaconf.h中的编译时选项LUA_COMPAT_GETN。)

  • 函数loadlib重命名为
    package.loadlib
    。(见luaconf.h中的编译时选项LUA_COMPAT_LOADLIB。)

  • 函数math.mod重命名为
    math.fmod
    。(见luaconf.h中的编译时选项LUA_COMPAT_MOD。)

  • 不赞成使用函数table.foreach和table.foreachi。可用for循环pairs或ipairs代替。

  • 由于新模块系统,函数
    require
    中有实质的改变。然而,新行为很大程度上兼容旧的,除了require从
    package.path
    获取路径而不是从LUA_PATH。

  • 函数
    collectgarbage
    具有不同的参数。不赞成使用函数gcinfo;使用collectgarbage("count")代替。

7.3 - API变化

  • luaopen_*函数(打开库)不能像常规C函数那样直接调用。它们必须像Lua函数那样通过Lua调用。

  • lua_open函数被
    lua_newstate
    取代以允许用户设置内存分配函数。你能用来自标准库的
    luaL_newstate
    创建带标准分配函数(基于realloc)的状态机。

  • 不赞成使用函数luaL_getn和luaL_setn(来自辅助库)。使用
    lua_objlen
    代替luaL_getn,并且没有luaL_setn的替代物。

  • 函数luaL_openlib被
    luaL_register
    取代。

  • 现在,当给定值不是预期类型的用户数据时,函数luaL_checkudata抛出错误。(在Lua 5.0中返回NULL。)

               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/57558/showart_1131329.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP