自学内容网 自学内容网

Lua语法(三)——元表与元方法

参考链接:
系列链接: Lua语法(一)
系列链接: Lua语法(二)——闭包/日期和时间
系列链接: Lua语法(三)——元表与元方法
系列链接: Lua语法(四)——协程
系列链接: Lua语法(五)——垃圾回收
系列链接: Lua语法(六)——面相对象编程

简介

  在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) do
    print(index,value)--元表
    for key, value in pairs(value) do
        print(key,value)--所有元方法
    end
end
--输出
__indextable: 0000000000ea9f30
repfunction: 000000006849d270
formatfunction: 000000006849eb30
charfunction: 000000006849d730
gsubfunction: 000000006849fe90
upperfunction: 000000006849d150
matchfunction: 000000006849fe70
unpackfunction: 000000006849ddf0
reversefunction: 000000006849d1e0
lowerfunction: 000000006849d3d0
bytefunction: 000000006849f4a0
dumpfunction: 000000006849f300
gmatchfunction: 000000006849d680
subfunction: 000000006849f3a0
packfunction: 000000006849e150
packsizefunction: 000000006849dcb0
findfunction: 000000006849fe80
lenfunction: 000000006849cf10

原文地址:https://blog.csdn.net/qq_44653106/article/details/137615695

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!