This is an implementation of a class-oriented Lua module, coded entirely in Lua. The object model allows you to override new() (see tests), so you can write classes that behave the way you want. While still in design stage, the interface is getting quite stable and I will add a multiple inheritance mechanism if a user asks me to, or if I need it miself.
This is a beta release, please report bugs & feature requests to the project's UserVoice Page.
Features
Class oriented
All classes derive from Object
Single inheritance (will add multiple if someone needs it)
All method calls are virtual, the class of the instance determines the bound method
Access to superclass method in overriden methods with a Java-like super.method(self)
The use of super only grants access to methods, NOT to data members (prevents many evils)
Consistent use of :, always use : to call any method of any class or instance
Object model allows to redefine new() in any class (see tests)
Use has to define members (inspired by Moose)
Hopefully only one way to do things, very predictible results
Note: there is a Prototype.lua file in the package, which is completely independant, but if you need prototype-based oop have a look at it (it provides a super(self) function).
Warnings
This is a beta release. Changes can be made in the future
No optimization. This is still in the design stage
Code
This project's code can be dowloaded from its GitHub page.
The main point is to bootstrap the object model and then,
build on it to populate Class with new(), inheritsFrom(), subclass(),
and Object with initialize(), isKindOf(), clone()...
Thanks to Ludovic Perrine for making things clearer with enlightening discussions.
Thanks to Robert Rangel for finding a blocker bug fixed in version 0.0.3.
See Also
The project's UserVoice page for bugs & feature requests.
请发表评论