Lua 模块与调用

学习目标:

模块类似于一个封装库,从 Lua 5.1 开始,Lua 加入了标准的模块管理机制,可以把一些公用的代码放在一个文件里,以 API 接口的形式在其他地方调用,有利于代码的重用和降低代码耦合度。

Lua 的模块是由变量、函数等已知元素组成的 table,因此创建一个模块很简单,就是创建一个 table,然后把需要导出的常量、函数放入其中,最后返回这个 table 就行。

以下为创建自定义模块 mod.lua,文件代码格式如下:

-- 文件名为 mod.lua
-- 定义一个名为 mod 的模块

-- lua模块
print("CC ————————————> 01")
--模块
mod = {}

--变量
mod.vodid = "906192"

--函数
--属性、普通方法、匿名函数
mod.GetVodId = function()
  return mod.vodid
end

--构造函数
function mod:New(o)
  local t = o or {}
  setmetatable(t,{__index = self})
  return t
end

--全局方法
function Show()
  print("调用Show方法")
end

function mod.SetVodId(id)
 print("调用SetVodId方法",id)
  mod.vodid = id
end


--私有方法
local function Tables()
  return type(mod)
end


--测试
print("执行",Tables())

--~ m = mod
--~ print("GetVodId",m.GetVodId())
--~ m.SetVodId(123456)
--~ print("SetVodId",m.GetVodId())

--~ c = mod:New({cpid = 233})
--~ print("tab",c.GetVodId())
--~ print("cpid",c.cpid)

--返回
return mod

以下代码为写在其他 xxx.lua中,调用上述模块功能:

--调用mod
require "mod"
print("CC ————————————> 01")
c = mod:New({cpid = 233})
print("cpid",c.cpid)
print("GetVodId",c.GetVodId())
c.SetVodId(111)
print("GetVodId",c.GetVodId())
Show()


local m = require "mod"
print("CC ————————————> 02")
print("mod",m)
print("vodid",m.vodid)
m.SetVodId(123)
id = m.GetVodId()
print("GetVodId",id)
Show()

--调用结果
--[[
CC ————————————> 01
执行	table
CC ————————————> 01
cpid	233
GetVodId	906192
调用SetVodId方法	111
GetVodId	111
调用Show方法
CC ————————————> 02
mod	table: 0087B838
vodid	111
调用SetVodId方法	123
GetVodId	123
调用Show方法
--]]
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值