模块
个人理解:lua的包比起C#,基本上就是一个table记录所有信息,包括变量、常量等
module ={}
module.constant = "一个常量"
function module.func1()
io.write("一个共有函数\n")
end
local function func2()
print("一个私有函数")
end
function module.func3( ... )
func2()
end
return module
require("module")
print(module.constant)
module.func3()
元表
- 引入原因:可以实现对多个table操作,允许改变table的行为,每个行为关联对应的元方法。当table的键找不到对应的值时,如果table有元表,便会对元表进行检索。(元表可以理解为当查找失败时的catch(操作指南),告诉程序此时怎么办)
- 基本格式:
mytable = {}
mymetatable = {}
setmetatable(mytable,mymetation)
mytable = setmetatable({},{})
getmetatable(mytable)
mytable={}
mytable["x1"] = "找到到的值"
mymetatable = {
X2 = "找不到的值"
}
mymetatable.__index = mymetatable
setmetatable(mytable,mymetatable)
print(mytable.X2)