Module pl.class
Provides a reuseable and convenient framework for creating classes in Lua.
Two possible notations:
B = class(A) class.B(A)
The latter form creates a named class within the current environment. Note that this implicitly brings in pl.utils as a dependency.
See the Guide for further discussion
Functions
| _init (...) | initializes an instance upon creation. | 
| instance:is_a (some_class) | checks whether an instance is derived from some class. | 
| some_class:class_of (some_instance) | checks whether an instance is derived from some class. | 
| some_class:cast (some_instance) | cast an object to another class. | 
| class (base, c_arg, c) | create a new class, derived from a given base class. | 
Functions
- _init (...)
- 
    initializes an instance upon creation.
    Parameters:- ... parameters passed to the constructor
 Usage:local Cat = class() function Cat:_init(name) --self:super(name) -- call the ancestor initializer if needed self.name = name end local pussycat = Cat("pussycat") print(pussycat.name) --> pussycat 
- instance:is_a (some_class)
- 
    checks whether an instance is derived from some class.
 Works the other way around as class_of. It has two ways of using;
 1) call with a class to check against, 2) call without params.
    Parameters:- some_class
         class to check against, or nilto return the class
 Returns:trueifinstanceis derived fromsome_class, or ifsome_class == nilthen it returns the class table of the instanceUsage:local pussycat = Lion() -- assuming Lion derives from Cat if pussycat:is_a(Cat) then -- it's true, it is a Lion, but also a Cat end if pussycat:is_a() == Lion then -- It's true end 
- some_class
         class to check against, or 
- some_class:class_of (some_instance)
- 
    checks whether an instance is derived from some class.
 Works the other way around as is_a.
    Parameters:- some_instance instance to check against
 Returns:trueifsome_instanceis derived fromsome_classUsage:local pussycat = Lion() -- assuming Lion derives from Cat if Cat:class_of(pussycat) then -- it's true end 
- some_class:cast (some_instance)
- 
    cast an object to another class.
 It is not clever (or safe!) so use carefully.
    Parameters:- some_instance the object to be changed
 
- class (base, c_arg, c)
- 
    create a new class, derived from a given base class.
 Supporting two class creation syntaxes:
 either Name = class(base)orclass.Name(base). The first form returns the class directly and does not set its_name. The second form creates a variableNamein the current environment set to the class, and also sets_name.Parameters:- base optional base class
- c_arg optional parameter to class constructor
- c optional table to be used as class