这是 Lua 中与 OOP(面向对象编程 [1])相关的链接集合。
学习资料
相关讨论
功能实现
- 旧版 Lua
功能模块
- [lclass] - 极简 Lua 类(73 SLOC),受 Lua 轻量级设计启发,具备
- YetAnotherClassImplementation - 支持带
- 构造函数/初始化
- 简单继承
- 虚拟方法的类
- 继承属性的访问控制
- 类型转换
- MultipleInheritanceClasses - 支持带
- 构造函数/初始化
- 多重继承的类
- 共享派生(类似 C++ virtual)
- 歧义和继承属性的处理
- ObjectLua - 支持对象原型和带
- 构造函数/初始化
- 简单继承
- 强制根类
Object 的类 - 通过
super 函数访问被覆盖方法中的原始继承实现,类似于 Java 和 Python 类
- KlassModule - 支持带
- 构造函数和析构函数的类
- 简单的基于原型的继承
-
isA 方法 - 兼容 Lua 5.2
- [LOOP] - 轻量级模块,逐步支持
- 带构造函数/初始化支持的
loop.base 类 - 带简单继承的
loop.simple 类 - 带多重继承的
loop.multiple 类 - 带从超类复制成员的继承(更快的成员解析和元方法继承)的
loop.cached 类 - 带私有和保护成员访问的
loop.scoped 类
- [lua-Coat] - Perl5 的轻量级 OO 模型 [Coat] 的移植,支持
- 构造函数/初始化
- 多重继承的类
- 方法修饰符
- 内省操作
- 属性检查
- 对角色和类型声明的附加支持
- [MiddleClass] - 单文件模块(约 100 LoC),支持带
- 构造函数/初始化
- 简单继承
- 强制根类
Object 的类 - 基本混入(mixin)支持(复制方法)的类
- getter/setter 构建工具
- 附加库 [MiddleClass-extras],包含改进基本功能的混入。
- [OWL] - 单文件模块,提供具有以下特性的类实现
- 构造函数/初始化(也可按实例覆盖)。
- 多级继承(一直到顶层超类)。
- 易于使用,有两个主要函数:class() 和 instance()
- 常用 OOP 方法:is_a(), kind_of(), 和 instance_of()。
- 私有类表(由子类继承,但由实例对象不继承)。
- 通过 add_property_callback() 方法轻松实现基本元方法。
- 包含多个示例和文档
- 兼容 Corona SDK(提供显示对象类)以及非 Corona 项目。
- [30log] - 单文件模块。它具有
- 命名和未命名类
- 构造函数/初始化
- 属性的默认值
- 单重继承
- 对混入的基本支持
- [lupy] - 单文件模块(约 50 sloc,约 2 kb)。这是一个 Python 风格的类实现,具有一些 Ruby 特性
- 构造函数/初始化
- 单重继承
- 基本混入支持
- 缺失方法处理器
- 猴子补丁支持
- 基于词法作用域的封装
- 基于继承树的类型测试
- 命名空间和内部类支持
- [classy] - 单文件模块(约 460 sloc,约 14 kb),包含
- 构造函数/初始化(高效,在类定义期间预计算必要数据)
- 多重继承(以广度优先搜索顺序查找方法)
- 高效方法调用(在类定义期间预计算方法查找)
- 猴子补丁支持(对基类的更新会传播到派生类)
- 多方法(具有多个多态参数的函数)
- [lua-objects] - 单文件模块(约 300 sloc),具有
- 新!可定制的构造函数/析构函数方法和名称
- 新!多重继承(一直到顶层)
- 新!处理继承属性的歧义
- 新!对混入的高级支持
- 新!默认继承类 Class
- getter 和 setter
- 正确处理超类中缺失的方法 — superCall()
- 优化(来自超类的方法可以缓存到类/实例)
- 常用方法/属性 — .is_class, .is_instance, .isa(), .supers. .class
-
- [dmc-objects] 是为 Corona SDK 制作的
lua-object 子类的集合。它们展示了
- 自定义构造函数/初始化/析构函数
- 自定义构造函数/析构函数名称
- 混入使用,事件混入([lua-events-mixin])用于事件功能(add/removeEventListener 等)
-
dmc-objects 类,使用 dmc-objects 的多个 Corona 应用
- [PLoop] - 强大的 C# 风格 OOP 系统(约 12391 sloc,约 639 kb),具有
- 完整的 OOP 系统,提供原型、属性、环境、枚举、结构、接口、类等。
- 完整的和可定制的类型验证、函数参数验证、方法重载等。
- 线程池、集合、序列化和其他常用功能。
- Web 服务、mqtt 服务等框架。
- [SIMPLOO] - 简单的 Lua 对象方向(约 500 sloc,约 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] - Poorman's Object-Oriented Lua
- 单文件模块
- 类模板表
- 构造函数/析构函数
- 继承/多态
- 运算符
示例实现
- 另请参阅
RecentChanges · preferences
编辑 · 历史
最后编辑于 2023 年 12 月 25 日下午 9:36 GMT (diff)