Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / Lua模块几种形式

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