lua的包库

http://zjw2016.iteye.com/blog/2334542


包库为Lua提供简易的加载及创建模块的方法,由require、module方法及package表组成
1、module (name [, ···])
  功能:建立一个模块。
  当package.loaded[name]中存在时,当中的表作为module;
  当在全局表中存在name指定的表时,此表作为module;
  当以前两种情况都不存表name时,将新建一个表,并使其作为全局名name的值,并package.loaded[name],而且设t._NAME为name,t._M为module,t._PACKAGE为包的全名(模块名-组件a.b.c);最后把此module设t作为当前函数的新环境表和package.loaded[name]的新值(也就是说,旧的环境表将不能访问,除了加上package.seeall参数外),以被require使用
  module(name)后的可选参数为接收module名的函数,如package.seeall
2、require (modname)
  功能:加载指定的模块。
  此函数先检测package.loaded表中是否存在modname,存在则直接返回当中的值,没有则通过郰定义的加载器加载modname。
  查找加载器顺序:
  (1)检测package.preload表是否存在modname,有则加载
  (2)通过Lua Loader加载,通过查找存放于package.path的路径加载,有则加载
  (3)通过C Loader加载,通过查找存放于package.cpath的路径加载,有则加载
  (4)通过all-in-one Loader加载:
  通过查找modname.dll并查找当中的luaopen_
  其中XXXX为载块名-后的字符用_替换.后的字符:如:a.v1-b.c 当函数名为luaopen_b_c
  当require查找的不是一个Lua库或C库,它就会调用all-in-one loader,此加载器是用C路径作为载块的目录,
  当查找到合适的加载器时,require就会加载其中的模块,当加载器有返回值,将会存放于package.loaded[modname]表。最后返回package.loaded[modname]表
  当加载失败时,require将触发错误
3、package.cpath
  功能:用于require C loader的搜索路径
  可以通过修改LUA_CPATH变量(luaconf.h)修改此值
4、package.loaded
  功能:一个用于让require知道哪些模块已加载的记录表,如果package.loaded已经有require要的值,则直接返回此值
5、package.loadlib (libname, funcname)
  功能:通过动态连接C函数库方式加载Lua扩展库
  libname为库文件名,funcname为入口函数(此函数必须为纯C接口函数 c++则需用 extern "C" {} 进行限制)
6、package.path
  功能:用于require Lua loader的搜索路径
  可以通过修改LUA_PATH变量(luaconf.h)修改此值
7、package.preload
  功能:一个用于保存特殊模块加载器的表
8、package.seeall(module)
  功能:为module设置一个元表,此元表的__index字段的值为全局环境_G。所以module可以访问全局环境
  注:以此函数作为module()的一个选项(详细见module() 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值