-- 文件名为 test2.lua
--模块类似于一个封装库:可以把一些公用的代码放在一个文件里
--以API接口的形式在其他地方调用,有利于代码的重用及降低代码耦合度
--lua模块是由变量、函数等元素组成的table,实质上就是一个table
--以下是创建一个模块的样例:
mod = {} --创建了一个空的table
mod.name = "易勇" --加入常量name到模块中
mod.age = 30 --加入常量age到模块中
mod.study = "I study lua" --加入常量study到模块中
function mod.fun1() --加入函数到模块中 必须要以"模块名.函数名"的形式加入函数,否则函数不在模块内
print("this is 第一个模块")
end
local function fun2() --此函数是局部函数,不在模块内,外部不能引用
print("local 表示局部的,这是一个局部函数")
end
function mod.fun3()
io.write("this is fun3,\n")
fun2() --这里可以引用局部函数
end
return mod
--Lua提供了一个名为require的函数用来加载模块:以下两种方式均可
--require("模块名")
--require "模块名"
require("test2") --这里test2是模块文件的文件名,且文件要放到require函数能加载的目录下
print(mod.name) --这里的mod则是test2文件中所返回的模块名称(table的名称)
m = require("test2") --也可以为模块取一个别名,别名还可以用local修饰。这里的m就相当于mod
m.fun1() --通过 m. 或者 mod. 就可以引用模块中声明好的常量或函数
mod.fun3()