歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Lua模塊幾種形式

剛學,如果有問題看manual,不多說

兩個文件說明下testlib.lua在當前目錄下,maxmin.lua在當前目錄的子目錄lualibs下。

即./testlib.lua,./lualibs/maxmin.lua

測試過沒有問題,大致可以清楚的闡述lua中的模塊是怎麼個樣子,下面上代碼:

testlib.lua

local 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("\n")
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
end

local function max(a,b)
    if a > b then return a
    else return b end
end

function maxmin.findmax(...)
    local data = ...
    m = data[1]
    for _,v in ipairs(data)
    do
        m=max(m,v)
    end
    return m
end

function maxmin.findmin(...)
    local data = ...
    m = data[1]
    for _,v in ipairs(data)
    do
        m=min(m,v)
    end
    return m
end

return 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
end

function M.max(a,b)
    if a > b then return a
    else return b end
end

function M.findmax(...)
    local data = ...
    m = data[1]
    for _,v in ipairs(data)
    do
        m=M.max(m,v)
    end
    return m
end

function 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
end

local function max(a,b)
    if a > b then return a
    else return b end
end

function maxmin.findmax(...)
    local data = ...
    m = data[1]
    for _,v in ipairs(data)
    do
        m=max(m,v)
    end
    return m
end

function maxmin.findmin(...)
    local data = ...
    m = data[1]
    for _,v in ipairs(data)
    do
        m=min(m,v)
    end
    return m
end
--]]

Copyright © Linux教程網 All Rights Reserved