模块
[TOC]
@date: 2018-3-18
模块
从Lua5.1开始,Lua添加了对模块和包的支持。
Lua 的模块是由变量、函数等已知元素组成的 table,因此创建一个模块很简单,就是创建一个table,然后把需要导出的常量、函数放入其中,最后返回这个 table 就行。
示例:
mymodule.lua
local _M = {}
_M.VERSION = "1.0"
_M.getName = function()
return "get"
end
return _M
使用require
即可引入模块:
local m = require "mymodule"
print(m.VERSION)
print(m.getName())
输出:
1.0
get
点号与冒号操作符的区别
看下面示例代码:
local str = "abcde"
print("case 1:", str:sub(1, 2))
print("case 2:", str.sub(str, 1, 2))
输出:
case 1: ab
case 2: ab
冒号操作会带入一个 self
参数,用来代表 自己
。而点号操作,只是内容的展开,需要手动传入self
参数。
在函数定义时,使用冒号将默认接收一个 self
参数,而使用点号则需要显式传入 self
参数。
示例:
mytable = {}
mytable.func1 = function(self, name)
self.name = name
end
mytable:func2 = function(name)
self.name = name
end
这里的func1
和func2
是等价的。