当前位置: 首页 > news >正文

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
http://www.lryc.cn/news/337379.html

相关文章:

  • Lua语法(五)——垃圾回收
  • 已解决java.net.NoRouteToHostException: 无法到达主机异常的正确解决方法,亲测有效!!!
  • 代码随想录算法训练营第三十八天| 509. 斐波那契数,70. 爬楼梯,746. 使用最小花费爬楼梯
  • 视频中会动的进度条
  • C++高级特性:柯里化过程与std::bind(六)
  • vmware虚拟机补救
  • 数据结构(算法)
  • SpringCloud集成SkyWalking链路追踪并收集日志2
  • 纯小白蓝桥杯备赛笔记--DAY4(数学数据结构图论)
  • python 最简单的网页爬虫
  • 二叉树-数据结构
  • ansible使用shell模块的环境变量问题
  • ChatGPT论文写作指南:写出引人注目的论文
  • ARM64架构栈帧回溯
  • LangChain:大型语言模型(LLMs)-- 基础知识
  • 总分410+专业130+国防科技大学831信号与系统考研经验国防科大电子信息与通信工程,真题,大纲,参考书。
  • chatgpt Team 4.0共享合租账号的新方式
  • 类和对象二
  • GD32 HID键盘矩阵键盘发送数据时,一直发送数据问题处理
  • 小程序地理位置权限申请+uniapp调用uni.getLocation
  • 后台权限控制及动态路由
  • 云计算:Linux 部署 OVS 集群(控制端)实现OpenFlow
  • 使用/api/put保存数据到OpenTSDB,报204错误
  • Open3D kmeans聚类(马氏距离,Python版本)
  • python抠图程序
  • Android13 CameraServer启动流程
  • 如何升级node.js版本
  • Excel---一个工作簿中的多个sheet合并成一个PDF
  • 结合文本的目标检测:Open-GroundingDino训练自己的数据集
  • 分布式锁-redission锁的MutiLock原理