Lua 模块和包
Lua 模块与包
模块类似于一个封装库,从 Lua 5.1 开始,Lua 加入了标准的模块管理机制,可以把一些公用的代码放在一个文件里,以 API 接口的形式在其他地方调用,有利于代码的重用和降低代码耦合度。
Lua 的模块是由变量、函数等已知元素组成的 table,因此创建一个模块很简单,就是创建一个 table,然后把需要导出的常量、函数放入其中,最后返回这个 table 就行。
模块类似于一个封装库,从 Lua 5.1 开始,Lua 加入了标准的模块管理机制,可以把一些公用的代码放在一个文件里,以 API 接口的形式在其他地方调用,有利于代码的重用和降低代码耦合度。
Lua 的模块是由变量、函数等已知元素组成的 table,因此创建一个模块很简单,就是创建一个 table,然后把需要导出的常量、函数放入其中,最后返回这个 table 就行。
require 函数
Lua提供了一个名为require的函数用来加载模块。要加载一个模块,只需要简单地调用就可以了。例如:
require ("模块名")
--或者
require "模块名"
- 1
- 2
- 3
简单示例:
这是显示的模块Lua代码,命名为module,,,
-- 定义一个名为 module 的模块(一般和文件同名)
module = {}
-- 定义一个常量
module.name = "这是module一个常量"
-- 定义一个函数
function module.myfunc1() io.write("这是module一个全局函数!")
end
local function myfunc2() print("这是module的一个局部函数!")
end
function module.myfunc3() myfunc2()
end
return module
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
这是调用模块的代码,,,
-- 引用module(模块文件名),,类似于C#的引用命名空间
require "module"
--访问模块的变量
print(module.name)
--访问模块的方法
module.myfunc1()
--不能调用局部变量
--module.myfunc2()
module.myfunc3()
--[[
输出是:
我是Czhenya
这是module的一个全局函数!
这是module的一个局部函数!
--]]
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
C包:
Lua和C是很容易结合的,使用C为Lua写包。
与Lua中写包不同,C包在使用以前必须首先加载并连接,在大多数系统中最容易的实现方式是通过动态连接库机制。
Lua在一个叫loadlib的函数内提供了所有的动态连接的功能。这个函数有两个参数:库的绝对路径和初始化函数
参考链接 && 推荐查看:http://www.runoob.com/lua/lua-modules-packages.html
文章来源: czhenya.blog.csdn.net,作者:陈言必行,版权归原作者所有,如需转载,请联系作者。
原文链接:czhenya.blog.csdn.net/article/details/78445052
- 点赞
- 收藏
- 关注作者
评论(0)