首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Lua-模块与包,最佳实践

2013-10-10 
Lua--模块与包,最佳实践最近在学Lua 一直对模块与包的使用有很多不明白的地方,有的引用使用. 有的引用使用

Lua--模块与包,最佳实践

最近在学Lua 一直对模块与包的使用有很多不明白的地方,有的引用使用. 有的引用使用: 到底都是怎么个情况呢?今天下午要搞定!

一个包就是模块的集合:A Package is a collection of modules.

 从Lua 5.1开始,可以使用require和module函数来分别引用和创建Lua中的模块,

调用模块内函数的简单方法:

Lua-模块与包,最佳实践
 1 --将模块名设置为require的参数,这样今后重命名模块时,只需重命名文件名即可。 2 local modname = ... 3 local M = {} 4 _G[modname] = M 5  6 M.i = {r = 0, i = 1}  --定义一个模块内的常量。 7 function M.new(r,i) return {r = r, i = i} end 8 function M.add(c1,c2)  9     return M.new(c1.r + c2.r,c1.i + c2.i)10 end11 12 function M.sub(c1,c2)13     return M.new(c1.r - c2.r,c1.i - c2.i)14 end15 --返回和模块对应的table。16 return M
Lua-模块与包,最佳实践

   但上面的这种太复杂和重复,所以要在5.1后,引入了一个module函数用来封装以上基本功能,在文件开头加入module(..., package.seeall) 就可以达到将当前的lua文件声明为一个module,不需要声明当前的module名字。

子module,使用. 来区分名字的level,如一个模块名为mod.sub就是一个mod的子模块,一个包package是所有模块的完全树。

至于什么时候用. 还是: 的问题,

// in the main.lua filerequire "logging.test"require "test22"local function main()    print("OOLL")    basi.beforePrint()    see.beforePrint()end//logging.test.lua, logging是一个文件夹module('basi', package.seeall)function beforePrint()    print("IOK")end//test2.lua 这个文件和main.lua是位于同一个文件夹下面module('see', package.seeall)function beforePrint()    print("insss")end
输出结果:

OOLL
IOK
insss



http://www.cnblogs.com/stephen-liu74/archive/2012/07/04/2421283.html    Step By Step(Lua模块与包)

http://www.cnblogs.com/stephen-liu74/archive/2012/07/06/2421656.html    Step By Step(Lua面向对象)

热点排行