Lua从5.1添加了对模块和包的支持,Lua模块的机构是一个表或者是函数,可以将公共的代码放在一个文件中,有利于代码的重用和降低耦合度。
可以采用require函数引入模块。
require函数
- 格式
require ("模块名")
或
require "模块名"
采用之前一篇文档“Nginx结合Lua实现限流”中的示例来说明模块的引用。
- 新创建一个文件splitutil.lua(字符串分割)
/** Created by Erick.
** DateTime: 2019-1-4 16:59
**/
local _M = {}
function _M.split(str,delim)
if type(delim) ~= "string" or string.len(delim) <= 0 then
return
end
local start = 1
local tab = {}
while true do
local pos = string.find(str,delim,start,true)
if not pos then
break
end
table.insert(tab,string.sub (str,start,pos-1))
start = pos+string.len(delim)
end
table.insert(tab,string.sub(str,start))
return tab
end
return _M
以上定义一个table表,然后定一个函数用于实现分割,注意方法的名称要用表名+点+名称,这样可以看做是面向对象,采用对象点的方式调用。
- 新建main.lua,来引入splitutil.lua模块
local splitutil = require("splitutil")
local str1 = "hello-lua"
local splitStr = splitutil.split(str1 , "-")
print("------------" , splitStr[1])
print("------------" , splitStr[2])
------输出结果----------
------------ hello
------------ lua
注意:做为公共模块提供给外部使用的话,要保证安全,所以应避免全局变量的出现。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/10a474fdea7d2508da13b74679079e90.jpeg)