search/
Start typing to search packages!
package_2
classic
By @kiy4ku
Roblox
MirroredClassic
A tiny class module for Lua. Attempts to stay simple and provide decent performance by avoiding unnecessary over-abstraction.
Usage
The module should be dropped in to an existing project and required by it:
Object = require "classic"
The module returns the object base class which can be extended to create any additional classes.
Creating a new class
Point = Object:extend()
function Point:new(x, y)
self.x = x or 0
self.y = y or 0
end
Creating a new object
local p = Point(10, 20)
Extending an existing class
Rect = Point:extend()
function Rect:new(x, y, width, height)
Rect.super.new(self, x, y)
self.width = width or 0
self.height = height or 0
end
Checking an object's type
local p = Point(10, 20)
print(p:is(Object)) -- true
print(p:is(Point)) -- true
print(p:is(Rect)) -- false
Using mixins
PairPrinter = Object:extend()
function PairPrinter:printPairs()
for k, v in pairs(self) do
print(k, v)
end
end
Point = Object:extend()
Point:implement(PairPrinter)
function Point:new(x, y)
self.x = x or 0
self.y = y or 0
end
local p = Point()
p:printPairs()
Using static variables
Point = Object:extend()
Point.scale = 2
function Point:new(x, y)
self.x = x or 0
self.y = y or 0
end
function Point:getScaled()
return self.x * Point.scale, self.y * Point.scale
end
Creating a metamethod
function Point:__tostring()
return self.x .. ", " .. self.y
end
License
This module is free software; you can redistribute it and/or modify it under the terms of the MIT license. See LICENSE for details.
Package Details
Install command (Click to copy)
Version
1.0.0
License
MIT
Safe for commercial use
Automated license review — not legal advice.
