本文主要是介绍Lua语法(三)——元表与元方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
参考链接:
系列链接: Lua语法(一)
系列链接: Lua语法(二)——闭包/日期和时间
系列链接: Lua语法(三)——元表与元方法
系列链接: Lua语法(四)——协程
系列链接: Lua语法(五)——垃圾回收
系列链接: Lua语法(六)——面相对象编程
元表与元方法目录
- 简介
- 正文
- 元表
- 元方法
- 表相关常用的元方法
- __index
- __newindex
- __len
- __call
- 算术及关系运算 元方法
- __add
- __eq
- __len
- __unm
- 综合案例
- 库定义元方法
- __tostring
- __pairs
简介
在Lua中,元表(metatable)是一种特殊的表,用于控制其他表的行为。每个表可以关联一个元表,通过设置元表和元方法,可以修改表的一些默认行为。
元方法(metamethod)是一种特殊的函数,用于定义表的一些特殊操作。
元方法通过在元表中定义特定的字段来实现。例如,当表进行加法操作时,Lua会检查表的元表中是否定义了__add字段。如果定义了__add字段,Lua会调用该字段对应的函数来执行加法操作。
正文
元表
只有字符串才有默认的元表,其他类型需要手动添加
任何表都可以作为其他表的元表
---------1.初体验,设置元表,获取元表
t={}
t1={} --元表
print(getmetatable(t))
setmetatable(t,t1) --设置元表
print(getmetatable(t))
print(getmetatable("nihao"))
print(getmetatable("hello"))
print(getmetatable(10))
--输出
nil
table: 00000000006e9df0
table: 00000000006e9ef0
table: 00000000006e9ef0
nil-----2.获取字符串默认的元表以及里面的元方法
tab = getmetatable("hello")
for index, value in pairs(tab) doprint(index,value) --元表for key, value in pairs(value) doprint(key,value) --所有元方法end
end
--输出
__index table: 0000000000ea9f30
rep function: 000000006849d270
format function: 000000006849eb30
char function: 000000006849d730
gsub function: 000000006849fe90
upper function: 000000006849d150
match function: 000000006849fe70
unpack function: 000000006849ddf0
reverse function: 000000006849d1e0
lower function: 000000006849d3d0
byte function: 000000006849f4a0
dump function: 000000006849f300
gmatch function: 000000006849d680
sub function: 000000006849f3a0
pack function: 000000006849e150
packsize function: 000000006849dcb0
find function: 000000006849fe80
len function: 000000006849cf10
这篇关于Lua语法(三)——元表与元方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!