前言
Lua是由标准C实现的解释型语言,它的执行效率比较高,通常作为脚本嵌入到应用程序中。
由于支持热更新,Lua在游戏开发领域应用普遍。作为从业人员,不得不来填这个大坑。
本文是Lua入门学习笔记,来源是泰课的一个Lua教程。这里主要记录Lua的语法,以及实现
简单的面向对象。
Lua 快速入门(一)——基础语法
Lua 快速入门(二)——函数(Function)
Lua 快速入门(三)——表(Table)
Lua 快速入门(四)——多脚本执行
Lua 快速入门(五)——协程(thread)
Lua 快速入门(六)——基础OOP
元表(metatable)
在 Lua table 中我们可以访问对应的 key 来得到 value 值,但是却无法对两个 table 进行操作(比如相加)。
因此 Lua 提供了元表(Metatable),允许我们改变 table 的行为,每个行为关联了对应的元方法。
查找一个表元素时,遵循以下规则:
1.在表中查找,如果找到,返回该元素,找不到则继续
2.判断该表是否有元表,如果没有元表,返回 nil,有元表则继续。
3.判断元表有没有 __index 方法,如果 __index 方法为 nil,则返回 nil;如果 __index 方法是一个表,则重复 1、2、3;如果 __index 方法是一个函数,则返回该函数的返回值。
设置元表
任何表变量都可以作为另一个表变量的元表,任何表变量都可以有自己的元表。
可以通过getmetatable获取某一个表的元表。
print("**********设置元表************")
meta = {
}
myTable = {
}
--设置元表函数
--第一个参数 子表,第二个参数 元表
setmetatable(myTable, meta)
--得到元表的方法
meta1 = getmetatable(myTable)
print(meta1)
特定操作(元方法)
当我们在子表中进行一些特定操作时,会执行元表中的内容。
print("**********特定操作-__tostring************")
meta2 = {
--当子表要被当做字符串使用时 会默认调用这个元表中的tostring方法
__tostring = function(t)
return t.name
end
}
myTable2 = {
name = "Canon"
}
setmetatable(myTable2, meta2)
print(myTable2) --Canon
print("**********特定操作-__call************")
meta3 = {
--当子表要被当做字符串使用时 会默认调用这个元表中的tostring方法
__tostring = function(t)
return t.name
end,
--当子表被当做一个函数来使用时 会默认调用这个__call中的内容
--当希望传参数时 一定要记住 默认第一个参数 是调用者自己
__call = function(a, b)
print(a)
print(b

最低0.47元/天 解锁文章
316

被折叠的 条评论
为什么被折叠?



