【水桥月与Lua】——Lua的Module

来源:互联网 发布:免费工程预算软件下载 编辑:程序博客网 时间:2024/06/05 06:03

Lua 的 Module

Lua5.1开始官方提供了module的实现标准

使用module的时候有一点比较容易忽略,module指令运行完之后,整个环境被压栈,所以前面全局的东西再看不见了。

比如定义一个test 模块,使用

Module(“test”)

之后,下面的再看不见前面的全局变量,那么如果在这个module里面想要实现print函数怎么样呢?可以用一个简单的实现方法local print =print 这样来实现

这样print是一个local变量,下面也是可以看到的。

还有一种巧妙的方式,lua 5.1提供一个package.seeall 可以作为moduleoption传入

Module(“test”,package.seeall)

这样就ok了。——以上的使用经验是来自云风大大的,下面举一个自己写的实验例子来记录自己的这个学习。

做了一个实验的test,过程与源码如下

在同级目录下面定义了3个文件,module.lua , module_call.lua , module1.lua

Module.lua

module("Data")function add(r,i)return r+iend


 

Module1.lua

module("Data")function del(r,i)return r-iend


Module_call.lua

package.path = package.path..";../?.lua"require "module"require "module1"result  = Data.add(1,2)print(result)result1 = Data.del(1,2)     print(result1)


 

这样运行module_call.lua的结果是

3-1


 

意思就是require之后可以统一用模块module这个全局环境来调用里面的函数以及数据,

这样写有一个明显的好处是我们可以将配置表的所有数据统一放进声明模块data里面,从而达到让配置数据统一的目的。

原创粉丝点击