The : operator
The : operator is used to call methods on an object. Using the : operator requires that the __index metamethod is defined as the metatable itself. If the __index metamethod is set to the metatable itself, the result is to translate t:test(123) into mt["test"](t,123), where mt is the metatable which has been defined using set metatable for the table t.
Example
mt={}
mt.__index = mt
mt.test = function(self,value)
if self.total == null then
self.total = 0
end
self.total = self.total + value
return self.total
end
t={}
setmetatable(t,mt) --> x = 123
x = t:test(123)
y = t:test(1) --> y = 124
z = t.total --> z = 124