看云峰博客实现lua重载普通函数,也来个实现面向对象的重载,其实没什么用处。展示一下Lua的灵活性
local EJShapeImp = {}
EJShapeImp.__curFuncName = nil
function EJShapeImp.dispatch(self, ...)
local funcName = EJShapeImp.__curFuncName
local n = select ("#",...)
for i = 1,n do
local t = type(select(i,...))
if t =="number" then
funcName = funcName.."I"
elseif t == "string" then
funcName = funcName.."S"
elseif t == "boolean" then
funcName = funcName.."B"
elseif t == "table" then
funcName = funcName.."T"
elseif t == "function" then
funcName = funcName.."F"
end
end
EJShapeImp[funcName](self, ...)
end
function EJShapeImp:drawI(num1)
local area = self:calcArea()
print("drawII num1="..num1.." area="..area)
end
function EJShapeImp:dra