class

From Inspired-Lua Wiki
Jump to navigation Jump to search

A complete tutorial about classes is written here: http://inspired-lua.org/index.php/2011/05/5-object-classes/

Here's how the class([parent]) function is defined, in the API :

class = function(prototype)
local derived={}
 	if prototype then
 		function derived.__index(t,key)
 			return rawget(derived,key) or prototype[key]
 		end
 	else
 		function derived.__index(t,key)
 			return rawget(derived,key)
 		end
 	end
 	function derived.__call(proto,...)
 		local instance={}
 		setmetatable(instance,proto)
 		local init=instance.init
 		if init then
 			init(instance,...)
 		end
 		return instance
 	end
 	setmetatable(derived,derived)
 	return derived
 end