我的学习C#回炉学习日志——Lua热更新06_模块

2023-12-30 21:35:36

模块

个人理解:lua的包比起C#,基本上就是一个table记录所有信息,包括变量、常量等

module ={}
module.constant = "一个常量"
function module.func1()
	io.write("一个共有函数\n")
end



local  function  func2()
	-- body
	print("一个私有函数")
end 

function module.func3( ... )
	-- body
	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 --将_index赋给元表
setmetatable(mytable,mymetatable)

print(mytable.X2)                                                                                                                                                                                                                                                                                                                                                                                                                                                                            

文章来源:https://blog.csdn.net/wsctx/article/details/112168906
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。