lua module

2.module方法的使用

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. module (“moduleA”)   

相当于执行了以下

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. local name = “moduleA”        
  2. local M = {}                               
  3. _G[name] = M                        
  4. package.loaded[modname] = M      
  5. setfenv(1,M)                                

3.关于module( ... , package.seeall)

        一般在一个Lua文件内以module函数开始定义一个包。module同时定义了一
个新的包的函数环境,以使在此包中定义的全局变量都在这个环境中,而非
使用包的函数的环境中。理解这一点非常关键。 “module(..., package.seeall)”
的意思是定义一个包,包的名字与定义包的文件的名字相同,并且在包的函数
环境里可以访问使用包的函数环境。
使用方式
        一般用require函数来导入一个包,要导入的包必须被置于包路径(package
path)上。包路径可以通过package.path或者环境变量来设定。一般来说,
当前工作路径总是在包路径中。

       例如 文件 a.lua

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. module (..., package.seeall)  
  2. t = {}  
  3. function f()  
  4.  --todo  
  5. end  
         文件 main.lua

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. require "a"  
调用脚本a中的任何全局变量或者函数必须加上a.

实现在不同的lua文件中可以用相同的名称定义变量或者函数

-----------------------------------------------------------------------------------------------

注意,前面的几行代码都没了,只留下了一个module函数的调用。

module函数的调用已经相当于之前的那些代码了。

而package.seeall参数的作用就是让原来的_G依然生效,相当于调用了:setmetatable(M, {__index = _G});
 
再次留意一下,代码末尾的return M也不见了,因为module函数的存在,已经不需要我们主动去返回这个模块的table了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值