Lua的模块分析、Lua模块隔离、Lua模块抽取
Lua支持模块化编程,可以抽取出共有的功能模块,减少代码重复性,降低耦合度。
Lua的模块由全局变量或者私有变量、函数构成,被封装在一张表里面,然后需要将这张表返回。
例子
base.lua 文件
--base.lua 模块
--添加local的局部变量都是本模块中有效,其他引用模块不能直接调用
local a=0
local Add = function()
a = a + 1
end
local Sub = function()
a = a - 1
end
local Get = function()
return a
end
--Add 、 Sub 、Get都是base模块里面的局部变量函数,不能被外部引用,起到封装的作用,那么怎么隐藏这三个接口呢,并且还要让别人知道有这几个功能。
local CMD = {} -- 创建引用表CMD
CMD.Add = Add
CMD.Sub = Sub
CMD.Get = Get
function CMD.OverRideFun()
print('我是一个空函数,是给引用我这个模块的其他模块实现的')
end
--其他模块通过 requie "base" 引用之后,就可以调用本模块中的CMD表的内容了
return CMD
sub.lua 文件
--sub.lua 模块
--引用base.lua模块
local base = require "base"
--调用base模块中的Add和Get函数
base.Add()
base.Get()
--重写base模块中的OverRideFun接口
function base.OverRideFun()
print('我是sub模块的OverRideFun')
end
--在sub模块中添加自己特有的变量或者函数
base.IsMyVar = 1
function base.IsMyFun()
print('this is sub's fun ...')
end