lua模块几种形式
刚学,如果有问题看manual,不多说
两个文件说明下testlib.lua在当前目录下,maxmin.lua在当前目录的子目录lualibs下。
即./testlib.lua,./lualibs/maxmin.lua
测试过没有问题,大致可以清楚的阐述lua中的模块是怎么个样子,下面上代码:
testlib.lua
--[[ type 1maxmin={}local function min(a,b) if a < b then return a else return b endendlocal function max(a,b) if a > b then return a else return b endendfunction maxmin.findmax(...) local data = ... m = data[1] for _,v in ipairs(data) do m=max(m,v) end return mendfunction maxmin.findmin(...) local data = ... m = data[1] for _,v in ipairs(data) do m=min(m,v) end return mendreturn maxmin--]]---[[ type 2 无返回值,将table设置到package,之后外部require的时候照样能取到local M={}local modname = "lualibs.maxmin"_G[modname]=Mpackage.loaded[modname]=M--下面5行也可都注释掉--导出需要使用的全局变量到局部local print = printlocal ipairs= ipairs--设置模块环境为当前环境,即不需要_Glocal _ENV=M --lua 5.2,如果是之前版本则用setfenv(1,M)local function min(a,b) if a < b then return a else return b endendfunction M.max(a,b) if a > b then return a else return b endendfunction M.findmax(...) local data = ... m = data[1] for _,v in ipairs(data) do m=M.max(m,v) end return mendfunction M.findmin(...) local data = ... m = data[1] for _,v in ipairs(data) do m=min(m,v) end return mend--]]--[[ type 3 使用lua5.1中的module函数,5.2没有module函数module(...,package.seeall)local function min(a,b) if a < b then return a else return b endendlocal function max(a,b) if a > b then return a else return b endendfunction maxmin.findmax(...) local data = ... m = data[1] for _,v in ipairs(data) do m=max(m,v) end return mendfunction maxmin.findmin(...) local data = ... m = data[1] for _,v in ipairs(data) do m=min(m,v) end return mend--]]