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

Lua基础复习之Lua元表

## 今天复习下lua知识点 元表是Lua中重要的模块,它使得表与表之间得以交互,如使用__add元方法即可表与表之间进行交互。 当然,如果我们想利用Lua去模拟面向对象,元表也是其关键的实现方式。

__index: 当表中没有这个数据时,通过__index指向的表中获取数据;

__newindex:当表中没有所需要访问的数据时,在__newindex中访问该方法;

__add(a, b)      -- 对应 + 运算
__sub(a, b)      -- 对应 - 运算 
__mul(a, b)      -- 对应 * 运算
__div(a, b)      -- 对应 / 运算
__mod(a, b)      -- 对应 % 运算
__pow(a, b)      -- 对应 ^ 运算
__unm(a)         -- 对应 - (取负)运算

__eq(a, b) -- 对应 == 运算

__lt(a, b) -- 对应 < 运算

__le(a, b) -- 对应 <= 运算

rawget:绕过__index直接获取当前表中的数据,如果没有则返回nil;

rawset:绕过__newindex直接访问当前表中的数据,如果没有则直接在当前表中创建;

Lua 是一种轻量级的脚本语言,虽然它不像 Java 或 C++ 那样内置强大的面向对象(OO)特性,但它非常灵活,可以通过一些技巧实现面向对象编程。

Lua 中的类可以通过 table + function 模拟出来。

在 Lua 中,最基本的结构是 table,我们可以使用表(table)来创建对象。

ClassName = {}  -- 创建一个表作为类

通过 new 方法(或其他名称)创建对象,并初始化对象的属性。

function ClassName:new(...)local obj = {}  -- 创建一个新的空表作为对象setmetatable(obj, self)  -- 设置元表,使对象继承类的方法self.__index = self  -- 设置索引元方法-- 初始化对象的属性obj:init(...)  -- 可选:调用初始化函数return obj
end

表(table)是 Lua 中最基本的复合数据类型,可以用来表示对象的属性。

Lua 中的 function 可以用来表示方法:

function ClassName:sayHello()print("Hello, my name is " .. self.name)
end

使用 new 方法来创建对象,并通过对象调用类的方法。

local obj = ClassName:new("Alice")  -- 创建对象
obj:sayHello()  -- 调用对象的方法

相关文章:

  • C++——基础知识
  • 论文笔记 <交通灯> IntelliLight:一种用于智能交通灯控制的强化学习方法
  • RISC-V向量扩展与GPU协处理:开源加速器设计新范式——对比NVDLA与香山架构的指令集融合方案
  • Greenplum 与 PostgreSQL 的关系
  • 005微信小程序npm包_全局数据共享和分包
  • # 我使用过的 HTML + CSS 实践总结笔记(含说明)
  • 密度泛函涨落理论在医疗人工智能中的应用与展望:多尺度物理驱动智能的新范式
  • 【Vue】Vue2/3全局属性配置全攻略
  • 实验分享|自研局部DIC-GPU算法与开源GPU算法对比实验
  • SpringBoot-Actuator依赖项的作用配置 Heapdump堆栈信息泄露
  • 微信小程序:将搜索框和表格封装成组件,页面调用组件
  • springboot项目,利用docker打包部署
  • 简说 python
  • python题库及试卷管理系统
  • java循环语句-跳转关键字break、continue
  • 企业软件架构演进:从流程驱动到知识驱动的数字化转型路径
  • Elasticsearch/OpenSearch MCP Quickstart
  • C++并发编程-2.C++ 线程管控
  • FPGA基础 -- Verilog 表达式之操作符
  • FPGA基础 -- Verilog语言要素之数组
  • 社区微网站建设方案ppt模板/厦门百度广告开户
  • 如何用java做网站界面/厦门seo网站优化
  • 郑州付费系统网站开发建设/自媒体平台app
  • 蓝色脚手架织梦企业网站模板/怎么自己创建网址
  • 宁夏信用建设官方网站/长沙官网优化公司
  • 嘉兴模板建站代理/怎么网站推广