这是一个关于 Lua 中 OOP(面向对象编程[1])相关链接的集合。
学习资料
相关讨论
功能实现
- 旧版 Lua 版本
功能模块
- [lclass] - 极简的 Lua 类 (73 SLOC),灵感来自 Lua 的轻量级设计,功能包括
- YetAnotherClassImplementation - 支持带有以下功能的类
- 构造函数/初始化
- 简单继承
- 虚方法
- 对继承属性的访问控制
- 类型转换
- MultipleInheritanceClasses - 支持带有以下功能的类
- 构造函数/初始化
- 多重继承
- 共享派生(类似于 C++ 虚拟继承)
- 处理歧义和继承属性
- ObjectLua - 支持对象原型和类,具有
- 构造函数/初始化
- 简单继承
- 强制根类
Object
- 通过函数
super
访问覆盖方法中最初继承的实现,类似于 Java 和 Python 类
- KlassModule - 支持具有
- 构造函数和析构函数
- 简单的基于原型的继承
-
isA
方法
- 适用于 Lua 5.2
- [LOOP] - 轻量级模块,逐步支持
-
loop.base
类,具有构造函数/初始化支持
-
loop.simple
类,具有简单继承
-
loop.multiple
类,具有多重继承
-
loop.cached
类,具有从超类复制成员的继承(更快的成员解析和元方法继承)
-
loop.scoped
类,具有对成员的私有和受保护访问
- [lua-Coat] - [Coat](Perl5 的轻量级 OO 模型)的移植版本,支持
- 构造函数/初始化
- 多重继承
- 方法修饰符
- 内省操作
- 属性检查
- 对角色和类型声明的额外支持
- [MiddleClass] - 单文件模块(约 100 行代码),支持具有
- [OWL] - 单文件模块,提供具有以下功能的类实现
- 构造函数/初始化(也可以在每个实例的基础上覆盖)。
- 多级继承(一直到顶层超类)。
- 易于使用,有两个主要函数:class() 和 instance()
- 常见的 OOP 方法:is_a()、kind_of() 和 instance_of()。
- 私有类表(由子类继承,但不由实例对象继承)。
- 通过 add_property_callback() 方法轻松实现基本元方法。
- 包含多个示例和文档
- 与 Corona SDK(提供显示对象类)以及非 Corona 项目兼容。
- [30log] - 单文件模块。它具有
- 命名和未命名类
- 构造函数/初始化
- 属性的默认值
- 单继承
- 对混入的基本支持
- [lupy] - 单文件模块(约 50 行代码,约 2 KB)。它是一个 Python 风格的类实现,具有几个 Ruby 特性
- 构造函数/初始化
- 单继承
- 基本混入支持
- 缺少方法处理程序
- 猴子补丁支持
- 基于词法作用域的封装
- 基于继承树的类型测试
- 命名空间和内部类支持
- [classy] - 单文件模块(约 460 行代码,约 14 KB),包含
- 构造函数/初始化(高效,在类定义期间预先计算必要数据)
- 多重继承(方法查找以广度优先搜索顺序进行)
- 高效的方法调用(方法查找在类定义期间预先计算)
- 猴子补丁支持(对基类的更新会传播到派生类)
- 多方法(具有多个多态参数的函数)
- [lua-objects] - 单文件模块(约 300 行代码),包含
- 新!可自定义的构造函数/析构函数方法和名称
- 新!多重继承(一直到顶层)
- 新!处理继承属性的歧义
- 新!对 mixin 的高级支持
- 新!默认继承类,Class
- getter 和 setter
- 正确处理超类上的缺失方法 - superCall()
- 优化(来自超类的方法可以在类/实例上缓存)
- 通用方法/属性 - .is_class,.is_instance,.isa(),.supers. .class
-
- [dmc-objects] 是为 Corona SDK 制作的
lua-object
子类的集合。它们展示了
- 自定义构造函数/初始化/析构函数
- 自定义构造函数/析构函数名称
- mixin 使用,事件 mixin ([lua-events-mixin]) 用于事件功能(添加/删除事件监听器等)
-
dmc-objects
类,几个使用 dmc-objects
的 Corona 应用程序
- [PLoop] - 一个强大的 C# 风格 OOP 系统(约 12391 行代码,约 639 KB),包含
- 一个完整的 OOP 系统,提供原型、属性、环境、枚举、结构体、接口、类等。
- 完整且可自定义的类型验证、函数参数验证、方法重载等。
- 线程池、集合、序列化以及其他常用功能。
- 用于 Web 服务、MQTT 服务等的框架。
- [SIMPLOO] - 简单 Lua 面向对象编程(约 500 行代码,约 10 KB 压缩后)
- 使用类似于其他面向对象语言的简单语法,或使用传统的 Lua 表格。
- 定义构造函数和析构函数。析构函数在垃圾回收时调用(在 Lua 5.1 中使用 newproxy 也适用)。
- 关键字,如 private、public、abstract、static、const 和 meta(用于定义类内元方法)。
- 多重继承。在命名冲突时发出警告。父成员以直接引用形式存储在子类中,以保持速度。
- 使用点分隔的类名定义类命名空间。从其他命名空间导入类。为导入的类定义别名。使用函数环境。
- 包含一个生产模式配置设置,通过禁用非关键代码来进一步加快库速度。
- 类数据在定义期间预先计算。实例化时间为 O(n),其中 n = 类成员数量,这是由于对这些数据的简单深度复制。
- 命名空间被存储为嵌套的全局表,以便于访问。类拥有常见的辅助方法,例如:get_name()、get_class()、instance_of()。
- [oop.lua] - 一个支持 Lua 中基于原型的编程的库。
- [Luaoop] - 单文件模块,简单的基于类的 OOP 库
- [POOL] - 穷人的面向对象 Lua
- 单文件模块
- 类模板表
- 构造函数/析构函数
- 继承/多态
- 运算符
示例实现
- 另请参阅
最近更改 · 偏好设置
编辑 · 历史记录
最后编辑于 2023 年 12 月 26 日凌晨 3:36 GMT (差异)