Meta-table (Lua class)
Lua Object-Oriented Tutorial – Complete Guide
Creating Classes using Metatables in Lua
-- Creating a class
Vector2 = {}
Vector2.__index = Vector2
function Vector2.new(x, y)
local self = setmetatable({}, Vector2)
self.x = x
self.y = y
return self
end
Methods in Lua OOP
function Vector2:magnitude()
return math.sqrt(self.x * self.x + self.y * self.y)
end
Instantiation and Method Calling in Lua OOP
-- Create an instance
local vec = Vector2.new(3, 4)
-- Call a method
print(vec:magnitude()) --prints 5
Inheritance in Lua
-- Creating a new class based on 'Vector2'
Vector3 = setmetatable({}, Vector2)
Vector3.__index = Vector3
function Vector3.new(x, y, z)
local self = setmetatable(Vector2.new(x, y), Vector3)
self.z = z or 0
return self
end
-- Overriding the 'magnitude' method for 'Vector3'
function Vector3:magnitude()
return math.sqrt(self.x * self.x + self.y * self.y + self.z * self.z)
end
Written on November 14, 2023, Last update on November 14, 2023
lua