打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Lua Module

Lua Module

跳转至: 导航搜索

简介

Lua 模块

模块做了什么

  • module代表了访问的入口
module("lib.socket_moe.get")
  • module的名称应该是从主层访问的时候全部的路径。
  • 默认的情况下它的变量都是局部的,不会污染全局。

发现

  • 在模块里local的函数必须在执行函数的前面,否则可能找不到

困扰

  • Module的Local意味着什么?
  • module指令之前还是之后决定了这个呢?
  • 看起来这样就见到了全局的变量,散发出去了,那么是外面看到里面?还是里面看到外面呢?
module (...,package.seeall)

模块的命名

  • 直接以name命名
    module "name"
  • 直接用文件名引用,而不必每次修改,缺点代价是,无法直接运行模块,必须引用,否则出现未给定值。
    module(...)
    • 注意这里是不定参数的...不是字符串"...",不然你会遇到错误的:
lua: .\lib\qqlib.lua:216: attempt to index upvalue 'json_moe' (a boolean value)stack traceback:	.\lib\qqlib.lua:216: in function <.\lib\qqlib.lua:204>	(tail call): ?	(tail call): ?	.\lib\webqq.lua:230: in function 'Start_Moe'	Moe.lua:260: in main chunk	[C]: ?>Exit code: 1

模块的执行

主模块调用子模块后,将子模块的函数载入内存,而子模块如果有执行的语句,也会在require的时候执行一次,只是一次。

module(...,package.seeall) function seta()	a.b=12	--print (a.b)end -- 库的执行首次信息print "子模块被载入了"print (os.date())

模块变量的局部性

主模块可以让调用模块看到(package.seeall),调用模块也可以修改主模块数据.

子模块就是为了封装,让主模块控制子模块.

测试

load.lua

b=require("b") a={}b.seta()print (a.b) -- 可以访问模块变量

b.lua:

module(...,package.seeall) function seta()	a.b=12end

运行load.lua,会得到的是12

见识

自定义包的路径[1]

--将自定义包路径加入package的搜索路径中。也可以加到环境变量LUA_PATH中  local p = "自定义包路径的父目录"  local m_package_path = package.path  package.path = string.format("%s;%s?.lua;%s?/init.lua",      m_package_path, p, p)

Program in Lua

-->-->

<br\>
<br\>

<--<---

引用信息

以下是[Lua Module]所有用到的引用信息,向这些伟大的家伙致敬:
  1. 跳转 ^ http://blog.csdn.net/hong201/article/details/4163378
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
module (..., package.seeall) 到底是什么意思
Step By Step(Lua模块与包)(转)
Lua 模块与包 | 菜鸟教程
开始Python -- 模块(Modules) - Dynamic Script Lang...
一文搞懂Python中的核心概念:导入,模块,包
三分钟从入门到精通Python模块(我们在名为utils的模块中定义了一个名为乘法的函数)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服