ClassTool.lua
local function search (k, plist)
for i = 1, table.getn(plist) do
local v = plist[i][k]
if v then return v end
end
end
function createClass (...)
local c = {}
setmetatable(c ,{__index =
function (t, k)
local v = search(k, arg)
t[k] = v
return v
end
})
c.__index = c
function c:new (o)
o = o or {}
setmetatable(o, c)
return o
end
return c
end
ClassA.lua
ClassA = {}
function ClassA:msg()
print("ClassA msg")
end
ClassB.lua
ClassB = {}
function ClassB:say()
print("ClassB say")
end
main.lua
require("ClassA")
require("ClassB")
require("ClassTool")
local function main()
ClassTest = createClass(ClassA, ClassB)
test = ClassTest:new()
print(test:say())
print(test:msg())
end
main()