简介
模块是Lua中的一种特有的数据结构,
类似于C中的头文件,类似于java中的类,
有利于代码的重用和降低代码耦合度,
模块文件主要由table组成,在table中添加相应的变量和函数
其他文件在使用模块时,需要用require导入
(1)定义一个模块
模块文件名一般于其声明的table名称一致
新建一个lua文件,命名为rectangle,用于计算图形
--声明一个模块
rectangle = {}
--为模块添加一个变量
rectangle.pi =3.14
--w为模块添加函数(求周长)
function rectangle.perimeter(a,b)
return a + b
end
--以匿名函数方式为模块添加一个函数(求面积)
rectangle.area = function(a,b)
return a * b
end
return rectangle
(2)调用模块
--导入一个模块
require 'rectangle'
--访问模块,调用函数
print(rectangle.pi)
print(rectangle.perimeter(3,5))
print(rectangle.area(3,5))
结果
还可以通过table接收模块的返回值来使用模块
--导入一个模块
rect = require 'rectangle'
--访问模块,调用函数
print(rect.pi)
print(rect.perimeter(3,5))
print(rect.area(3,5))
结果
在模块中还可以定义与模块无关的内容,如全局变量,局部变量,全局函数,局部函数
新建一个名为 'rectangle.lua'的lua文件
--定义与模块无关的内容
--声明一个模块
rectangle = {}
--定义一个全局变量
glodenRatio = 0.618
--定义一个局部变量
local e = 2.718
--定义一个局部函数(求圆的面积)
local function circularArea(r)
return rectangle.pi * r *r
end
--定义一个全局函数(求矩形中最大圆的面积)
function maxCirculArea(a,b)
local r = math.min(a,b) / 2
return circularArea(r)
end
--返回这个table
return rectangle
访问与模块无关的内容
--访问与模块无关的内容
require 'rectangle'
print(glodenRatio)
print(maxCirculArea(3,5))
结果