
lua和其他语言一样,也有模块/包的概念,稍微有点不同的是,默认先从环境变量LUA_PATH中搜索lua文件,如果搜索不到,则从LUA_CPATH中搜索C文件。
对于我来说,时而去改变环境变量,则显得麻烦,并且在另外的环境中部署时还要修改环境变量,则显得不人性化,因此,觉得如下方式增加搜索路径比较好:
自定义包文件及包加载示例,假如文件结构如下:
蓝色表示文件夹,紫色表示文件
----------test.lua
----------demopackage
---------------------init.lua
---------------------a.lua
这时候,demopackage就是一个包了, 模块demopackage的功能由init.lua文件提供,模块demopackage.a由a.lua文件提供,下面将在test.lua文件中调用demopackage包:
--init.lua文件
--a.lua
上面的两个文件中,开头都有这么一行代码module(...,package.seeall),这是为了模块名以文件名命名,还有为了不污染全局变量_G,返回当前模块提供的函数等等。相当于:
--将模块名设置为文件名,且加载这个模块
local modname = ...
local M = {}
_G[modname] = M
package.loaded[modname] = M
--引入所需模块
local io = io
local print = print
setfenv(1,M) --> 设置当前环境变量
--开始实现模块功能
function test()
print("test")
end
……
调用demo文件
--test.lua
lua中,用require来加载包,如果想重命名加载的包,可以如下 *** 作:
local t = require "demopackage", 这时候,就可以用t调用demopackage中的功能了。
BTW,lua加载包时,不会加载包中所有的模块,这点是跟其他语言不一样的,这样做应该是为了提高运行速度吧。
总结以上是内存溢出为你收集整理的Lua学习笔记六——package全部内容,希望文章能够帮你解决Lua学习笔记六——package所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)