lua模块几种形式

刚学,如果有问题看manual,不多说

两个文件说明下testlib.lua在当前目录下,maxmin.lua在当前目录的子目录lualibs下。

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

测试过没有问题,大致可以清楚的阐述lua中的模块是怎么个样子,下面上代码:

testlib.lua

[python]  view plain copy
  1. local maxmin = require "lualibs.maxmin"  
  2. local test={3,23,63,32,1,2}  
  3. local min=maxmin.findmin(test)  
  4. local max=maxmin.findmax(test)  
  5. io.write("test array:")  
  6. for _,v in pairs(test)  
  7. do  
  8.     io.write(v," ")  
  9. end  
  10. io.write("\n")  
  11. print("min:" ,min)  
  12. print("max:" ,max)  

maxmin.lua

[python]  view plain copy
  1. --[[ type 1  
  2. maxmin={}  
  3.   
  4. local function min(a,b)  
  5.     if a < b then return a  
  6.     else return b end  
  7. end  
  8.   
  9. local function max(a,b)  
  10.     if a > b then return a  
  11.     else return b end  
  12. end  
  13.   
  14. function maxmin.findmax(...)  
  15.     local data = ...  
  16.     m = data[1]   
  17.     for _,v in ipairs(data)  
  18.     do  
  19.         m=max(m,v)  
  20.     end  
  21.     return m  
  22. end  
  23.   
  24. function maxmin.findmin(...)  
  25.     local data = ...  
  26.     m = data[1]  
  27.     for _,v in ipairs(data)  
  28.     do  
  29.         m=min(m,v)  
  30.     end  
  31.     return m  
  32. end  
  33.   
  34. return maxmin  
  35. --]]  
  36.   
  37. ---[[ type 2 无返回值,将table设置到package,之后外部require的时候照样能取到  
  38. local M={}  
  39. local modname = "lualibs.maxmin"  
  40. _G[modname]=M  
  41. package.loaded[modname]=M  
  42.   
  43. --下面5行也可都注释掉  
  44. --导出需要使用的全局变量到局部  
  45. local print = print  
  46. local ipairs= ipairs  
  47. --设置模块环境为当前环境,即不需要_G  
  48. local _ENV=M --lua 5.2,如果是之前版本则用setfenv(1,M)  
  49.   
  50. local function min(a,b)  
  51.     if a < b then return a  
  52.     else return b end  
  53. end  
  54.   
  55. function M.max(a,b)  
  56.     if a > b then return a  
  57.     else return b end  
  58. end  
  59.   
  60. function M.findmax(...)  
  61.     local data = ...  
  62.     m = data[1]  
  63.     for _,v in ipairs(data)  
  64.     do  
  65.         m=M.max(m,v)  
  66.     end  
  67.     return m  
  68. end  
  69.   
  70. function M.findmin(...)  
  71.     local data = ...  
  72.     m = data[1]  
  73.     for _,v in ipairs(data)  
  74.     do  
  75.         m=min(m,v)  
  76.     end  
  77.     return m  
  78. end  
  79. --]]  
  80.   
  81. --[[ type 3 使用lua5.1中的module函数,5.2没有module函数  
  82. module(...,package.seeall)  
  83. local function min(a,b)  
  84.     if a < b then return a  
  85.     else return b end  
  86. end  
  87.   
  88. local function max(a,b)  
  89.     if a > b then return a  
  90.     else return b end  
  91. end  
  92.   
  93. function maxmin.findmax(...)  
  94.     local data = ...  
  95.     m = data[1]   
  96.     for _,v in ipairs(data)  
  97.     do  
  98.         m=max(m,v)  
  99.     end  
  100.     return m  
  101. end  
  102.   
  103. function maxmin.findmin(...)  
  104.     local data = ...  
  105.     m = data[1]  
  106.     for _,v in ipairs(data)  
  107.     do  
  108.         m=min(m,v)  
  109.     end  
  110.     return m  
  111. end  
  112. --]]  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值