模块 个人理解:lua的包比起C#,基本上就是一个table记录所有信息,包括变量、常量等 module ={} module.constant = "一个常量" function module.func1()io.write("一个共有函数\n") endlocal function func2()-- bodyprint("一个私有函数") end function module.func3( ... )-- bodyfunc2() endreturn 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 --将_index赋给元表 setmetatable(mytable,mymetatable)print(mytable.X2)